Title: | Generate Dockerfiles for 'Shiny' Applications |
---|---|
Description: | Automates the creation of Dockerfiles for deploying 'Shiny' applications. By integrating with 'renv' for dependency management and leveraging Docker-based solutions, it simplifies the process of containerizing 'Shiny' apps, ensuring reproducibility and consistency across different environments. Additionally, it facilitates the setup of CI/CD pipelines for building Docker images on both GitLab and GitHub. |
Authors: | Vincent Guyader [aut, cre] |
Maintainer: | Vincent Guyader <[email protected]> |
License: | MIT + file LICENSE |
Version: | 0.0.2 |
Built: | 2025-02-08 20:26:32 UTC |
Source: | https://github.com/vincentguyader/shiny2docker |
Copies the docker-build.yml
file provided by the shiny2docker
package
into the .github/workflows/
directory within the specified base directory.
This GitHub Action configuration is designed to build a Docker image and push the
created image to the GitHub Container Registry.
set_github_action(path)
set_github_action(path)
path |
A character string specifying the base directory where the
|
A logical value indicating whether the file was successfully copied
(TRUE
) or not (FALSE
).
# Copy the docker-build.yml file to the .github/workflows/ directory in a temporary folder set_github_action(path = tempdir())
# Copy the docker-build.yml file to the .github/workflows/ directory in a temporary folder set_github_action(path = tempdir())
Copies the .gitlab-ci.yml
file provided by the shiny2docker
package
into the specified directory. The GitLab CI configuration is designed to build a Docker image
and push the created image to the GitLab container registry.
set_gitlab_ci(path)
set_gitlab_ci(path)
path |
A character string specifying the directory where the
|
A logical value indicating whether the file was successfully copied (TRUE
)
or not (FALSE
).
# Copy the .gitlab-ci.yml file to a temporary directory set_gitlab_ci(path = tempdir())
# Copy the .gitlab-ci.yml file to a temporary directory set_gitlab_ci(path = tempdir())
Generate a Dockerfile for a Shiny Application
shiny2docker( path = ".", lockfile = file.path(path, "renv.lock"), output = file.path(path, "Dockerfile"), FROM = "rocker/geospatial", AS = NULL, sysreqs = TRUE, repos = c(CRAN = "https://cran.rstudio.com/"), expand = FALSE, extra_sysreqs = NULL, use_pak = FALSE, user = NULL, dependencies = NA, sysreqs_platform = "ubuntu", folder_to_exclude = c("renv") )
shiny2docker( path = ".", lockfile = file.path(path, "renv.lock"), output = file.path(path, "Dockerfile"), FROM = "rocker/geospatial", AS = NULL, sysreqs = TRUE, repos = c(CRAN = "https://cran.rstudio.com/"), expand = FALSE, extra_sysreqs = NULL, use_pak = FALSE, user = NULL, dependencies = NA, sysreqs_platform = "ubuntu", folder_to_exclude = c("renv") )
path |
Character. Path to the folder containing the Shiny application (e.g., |
lockfile |
Character. Path to the |
output |
Character. Path to the generated Dockerfile. Defaults to |
FROM |
Docker image to start FROM Default is FROM rocker/r-base |
AS |
The AS of the Dockerfile. Default it |
sysreqs |
boolean. If |
repos |
character. The URL(s) of the repositories to use for |
expand |
boolean. If |
extra_sysreqs |
character vector. Extra debian system requirements. Will be installed with apt-get install. |
use_pak |
boolean. If |
user |
Name of the user to specify in the Dockerfile with the USER instruction. Default is |
dependencies |
What kinds of dependencies to install. Most commonly one of the following values:
|
sysreqs_platform |
System requirements platform. |
folder_to_exclude |
Folder to exclude during scan to detect packages |
Automate the creation of a Dockerfile tailored for deploying Shiny applications. It manages R dependencies using renv
, generates a .dockerignore
file to optimize the Docker build process, and leverages the dockerfiler
package to allow further customization of the Dockerfile object before writing it to disk.
An object of class dockerfiler
, representing the generated Dockerfile. This object can be further manipulated using dockerfiler
functions before being written to disk.
temp_dir <- tempfile("shiny2docker_example_") dir.create(temp_dir) example_app <- system.file("dummy_app", package = "shiny2docker") file.copy(example_app, temp_dir, recursive = TRUE) app_path <- file.path(temp_dir, "dummy_app") if (requireNamespace("rstudioapi", quietly = TRUE) && rstudioapi::isAvailable()) { rstudioapi::filesPaneNavigate(app_path) } docker_obj <- shiny2docker::shiny2docker(path = app_path) print(list.files(app_path,all.files = TRUE,no.. = TRUE)) # Further manipulate the Dockerfile object docker_obj$add_after( cmd = "ENV ENV \'MY_ENV_VAR\'=\'value\'", after = 3 ) docker_obj$write(file.path(app_path, "Dockerfile"))
temp_dir <- tempfile("shiny2docker_example_") dir.create(temp_dir) example_app <- system.file("dummy_app", package = "shiny2docker") file.copy(example_app, temp_dir, recursive = TRUE) app_path <- file.path(temp_dir, "dummy_app") if (requireNamespace("rstudioapi", quietly = TRUE) && rstudioapi::isAvailable()) { rstudioapi::filesPaneNavigate(app_path) } docker_obj <- shiny2docker::shiny2docker(path = app_path) print(list.files(app_path,all.files = TRUE,no.. = TRUE)) # Further manipulate the Dockerfile object docker_obj$add_after( cmd = "ENV ENV \'MY_ENV_VAR\'=\'value\'", after = 3 ) docker_obj$write(file.path(app_path, "Dockerfile"))