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

Online resources for Docker include

Online resources for publishing Docker images and containers

Dockerfile

Dockerfile for shiny apps

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)"]

Images

Get image from Docker Hub

docker pull <repository name>:<tagname>
docker image ls

Build image from dockerfile

docker build -t <image_name> .
docker build -t <my-shinyapp-image> .

Remove image

docker image rm <image_id>

Containers

Run container from image

# -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

Stop and restart container

docker stop <container name>
docker start <container name>

Remove container

# -f Force container to stop
docker container rm -f <container name>


gcfrench/store documentation built on May 17, 2024, 5:52 p.m.