Create a Dockerfile for your App
Source:R/add_dockerfiles.R
, R/add_dockerfiles_renv.R
dockerfiles.Rd
Build a container containing your Shiny App. add_dockerfile()
and
add_dockerfile_with_renv()
and add_dockerfile_with_renv()
creates
a generic Dockerfile, while add_dockerfile_shinyproxy()
,
add_dockerfile_with_renv_shinyproxy()
, add_dockerfile_with_renv_shinyproxy()
and
add_dockerfile_heroku()
creates platform specific Dockerfile.
Usage
add_dockerfile(
path = "DESCRIPTION",
output = "Dockerfile",
pkg = get_golem_wd(),
from = paste0("rocker/verse:", R.Version()$major, ".", R.Version()$minor),
as = NULL,
port = 80,
host = "0.0.0.0",
sysreqs = TRUE,
repos = c(CRAN = "https://cran.rstudio.com/"),
expand = FALSE,
open = TRUE,
update_tar_gz = TRUE,
build_golem_from_source = TRUE,
extra_sysreqs = NULL
)
add_dockerfile_shinyproxy(
path = "DESCRIPTION",
output = "Dockerfile",
pkg = get_golem_wd(),
from = paste0("rocker/verse:", R.Version()$major, ".", R.Version()$minor),
as = NULL,
sysreqs = TRUE,
repos = c(CRAN = "https://cran.rstudio.com/"),
expand = FALSE,
open = TRUE,
update_tar_gz = TRUE,
build_golem_from_source = TRUE,
extra_sysreqs = NULL
)
add_dockerfile_heroku(
path = "DESCRIPTION",
output = "Dockerfile",
pkg = get_golem_wd(),
from = paste0("rocker/verse:", R.Version()$major, ".", R.Version()$minor),
as = NULL,
sysreqs = TRUE,
repos = c(CRAN = "https://cran.rstudio.com/"),
expand = FALSE,
open = TRUE,
update_tar_gz = TRUE,
build_golem_from_source = TRUE,
extra_sysreqs = NULL
)
add_dockerfile_with_renv(
source_folder = get_golem_wd(),
lockfile = NULL,
output_dir = fs::path(tempdir(), "deploy"),
distro = "focal",
from = "rocker/verse",
as = NULL,
sysreqs = TRUE,
port = 80,
host = "0.0.0.0",
repos = c(CRAN = "https://cran.rstudio.com/"),
expand = FALSE,
open = TRUE,
document = TRUE,
extra_sysreqs = NULL,
update_tar_gz = TRUE,
dockerfile_cmd = NULL,
user = "rstudio",
...
)
add_dockerfile_with_renv_shinyproxy(
source_folder = get_golem_wd(),
lockfile = NULL,
output_dir = fs::path(tempdir(), "deploy"),
distro = "focal",
from = "rocker/verse",
as = NULL,
sysreqs = TRUE,
repos = c(CRAN = "https://cran.rstudio.com/"),
expand = FALSE,
extra_sysreqs = NULL,
open = TRUE,
document = TRUE,
update_tar_gz = TRUE,
user = "rstudio",
...
)
add_dockerfile_with_renv_heroku(
source_folder = get_golem_wd(),
lockfile = NULL,
output_dir = fs::path(tempdir(), "deploy"),
distro = "focal",
from = "rocker/verse",
as = NULL,
sysreqs = TRUE,
repos = c(CRAN = "https://cran.rstudio.com/"),
expand = FALSE,
extra_sysreqs = NULL,
open = TRUE,
document = TRUE,
user = "rstudio",
update_tar_gz = TRUE,
...
)
Arguments
- path
path to the DESCRIPTION file to use as an input.
- output
name of the Dockerfile output.
- pkg
Path to the root of the package. Default is
get_golem_wd()
.- from
The FROM of the Dockerfile. Default is
- as
The AS of the Dockerfile. Default it NULL.
- port
The
options('shiny.port')
on which to run the App. Default is 80.- host
The
options('shiny.host')
on which to run the App. Default is 0.0.0.0.- sysreqs
boolean. If TRUE, RUN statements to install packages system requirements will be included in the Dockerfile.
- repos
character. The URL(s) of the repositories to use for
options("repos")
.- expand
boolean. If
TRUE
each system requirement will have its ownRUN
line.- open
boolean. Should the Dockerfile/README/README be open after creation? Default is
TRUE
.- update_tar_gz
boolean. If
TRUE
andbuild_golem_from_source
is alsoTRUE
, an updated tar.gz is created.- build_golem_from_source
boolean. If
TRUE
no tar.gz is created and the Dockerfile directly mount the source folder.- extra_sysreqs
character vector. Extra debian system requirements.
- source_folder
path to the Package/golem source folder to deploy. default is retrieved via
get_golem_wd()
.- lockfile
path to the renv.lock file to use. default is
NULL
.- output_dir
folder to export everything deployment related.
- distro
One of "focal", "bionic", "xenial", "centos7", or "centos8". See available distributions at https://hub.docker.com/r/rstudio/r-base/.
- document
boolean. If TRUE (by default), DESCRIPTION file is updated using
attachment::att_amend_desc()
before creating the renv.lock file- dockerfile_cmd
What is the CMD to add to the Dockerfile. If NULL, the default, the CMD will be
R -e "options('shiny.port'={port},shiny.host='{host}');library({appname});{appname}::run_app()\
.- user
Name of the user to specify in the Dockerfile with the USER instruction. Default is
rstudio
, if set toNULL
no the user from the FROM image is used.- ...
Other arguments to pass to
renv::snapshot()
.
Examples
# \donttest{
# Add a standard Dockerfile
if (interactive() & requireNamespace("dockerfiler")) {
add_dockerfile()
}
#> Loading required namespace: dockerfiler
# Crete a 'deploy' folder containing everything needed to deploy
# the golem using docker based on {renv}
if (interactive() & requireNamespace("dockerfiler")) {
add_dockerfile_with_renv(
# lockfile = "renv.lock", # uncomment to use existing renv.lock file
output_dir = "deploy"
)
}
# Add a Dockerfile for ShinyProxy
if (interactive() & requireNamespace("dockerfiler")) {
add_dockerfile_shinyproxy()
}
# Crete a 'deploy' folder containing everything needed to deploy
# the golem with ShinyProxy using docker based on {renv}
if (interactive() & requireNamespace("dockerfiler")) {
add_dockerfile_with_renv(
# lockfile = "renv.lock",# uncomment to use existing renv.lock file
output_dir = "deploy"
)
}
# Add a Dockerfile for Heroku
if (interactive() & requireNamespace("dockerfiler")) {
add_dockerfile_heroku()
}
# }