knitr::opts_chunk$set( eval=FALSE, collapse = TRUE, comment = "#>" )
These notes were made whilst going through Microsoft's Build a containerized web application with Docker workshop, as well other online resources relevant to R. These additional resources were
Colin Fay's An introduction to Docker for R Users.
Oliver Guggenbuhlühl's Running your R script in Docker.
Oliver Guggenbuhlühl's How to Dockerize ShinyApps.
David Neuzerling's Determining System Dependencies for R Projects.
Online resources for Docker include
Docker Desktop for Windows - required for running Docker containers locally.
The Rocker Project - Docker Containers for the R Enviroment.
Online resources for publishing Docker images and containers
Dockerfile taken from Oliver Guggenbuhlühl's How to Dockerize ShinyApps blog,
# Shiny base image from rocker FROM rocker/shiny:latest # system libraries of general use ## install debian packages RUN apt-get update -qq && apt-get -y --no-install-recommends install \ libxml2-dev \ libcario2-dev \ libsqlite3-dev \ libmariadbd-dev \ libpq-dev \ libssh2-1-dev \ unixodbc-dev \ libcurl4-openssl-dev \ libssl-dev ## update system libaries RUN apt-get update && \ apt-get upgrade -y && \ apt-get clean # copy necessary files ## app folder COPY /<app directory> ./app ## renv.lock file COPY /<app directory>/renv.lock ./renv.lock # install renv and restore packages RUN Rscript -e 'install.packages("renv")' RUN Rscript -e 'renv:consent(provided = TRUE)' RUN Rscript -e 'renv::restore()' # expose port EXPOSE 3838 # run app on container start CMD ["R", "-e", "shiny::runApp('/app', host = '0.0.0.0', port = 3838)"]
docker pull <repository name>:<tagname> docker image ls
docker build -t <image_name> . docker build -t <my-shinyapp-image> .
docker image rm <image_id>
# -p Map container port to host port # -d Run container in background # --name Name to give to container docker run -d -p <host_port_number>:<container_port_number> <image_id> docker run -d -p <host_port_number>:<container_port_number> --name <container_name> <image_name> docker run -d --rm -p 3838:3838 <my-shinyapp-image> # -a Include stopped containers in list docker container ls -a
docker stop <container name> docker start <container name>
# -f Force container to stop
docker container rm -f <container name>
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.