shiny2docker {shiny2docker} | R Documentation |
shiny2docker
Description
Generate a Dockerfile for a Shiny Application
Usage
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")
)
Arguments
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 rocker/geospatial |
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 |
Details
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.
Value
An object of class dockerfiler
, representing the generated Dockerfile. This object can be further manipulated using dockerfiler
functions before being written to disk.
Examples
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"))