shiny2docker
is an R package designed to streamline the
process of containerizing Shiny applications using Docker. This vignette
demonstrates how to generate a Dockerfile for your Shiny application,
customize it, and configure GitLab CI to build and deploy your Docker
image.
The main function, shiny2docker()
, automates the
creation of a Dockerfile. It does the following:
renv.lock
file to capture your R package
dependencies..dockerignore
file to exclude unnecessary
files, reducing build time and image size.To generate a Dockerfile in your current directory, simply run:
Alternatively, you can specify custom paths for your Shiny
application, the renv.lock
file, and the output
Dockerfile:
The shiny2docker()
function returns an object of class
dockerfiler
. This object can be further manipulated to add
custom instructions before writing the Dockerfile to disk. For example,
you may want to set an environment variable:
The package provides the set_gitlab_ci()
function to
simplify the process of configuring a GitLab CI pipeline. This pipeline
is designed to build your Docker image and push it to the GitLab
container registry.
Once the .gitlab-ci.yml
file is in place, you can
integrate it with GitLab CI/CD to automate your Docker image build and
deployment process.
The package also provides the set_github_action()
function, which simplifies the process of configuring a GitHub Actions
pipeline. This pipeline is designed to build your Docker image and push
the created image to the GitHub Container Registry.
Once the docker-build.yml
file is in place, you can
integrate it with GitHub Actions to automate the Docker image build and
deployment process, allowing you to continuously build and deploy your
containerized Shiny applications.
shiny2docker
simplifies containerizing Shiny
applications by automating Dockerfile creation and CI configuration. By
integrating with renv
for dependency management and
providing a customizable dockerfiler
object, it offers a
flexible workflow for deploying Shiny apps in containerized
environments.
For further details, please refer to the package documentation and visit the dockerfiler GitHub repository.