Build a container containing your Shiny App. add_dockerfile() and add_dockerfile_with_renv() creates a generic Dockerfile, while add_dockerfile_shinyproxy(), add_dockerfile_with_renv_shinyproxy() and add_dockerfile_heroku() creates platform specific Dockerfile.

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 = ".",
  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,
  extra_sysreqs = NULL,
  update_tar_gz = TRUE,
  dockerfile_cmd = NULL
)

add_dockerfile_with_renv_shinyproxy(
  source_folder = ".",
  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,
  update_tar_gz = TRUE
)

add_dockerfile_with_renv_heroku(
  source_folder = ".",
  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,
  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

FROM rocker/verse

without renv.lock file passed
`R.Version()$major`.`R.Version()$minor` is used as tag

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, the Dockerfile will contain sysreq installation.

repos

character. The URL(s) of the repositories to use for options("repos").

expand

boolean. If TRUE each system requirement will have its own RUN line.

open

boolean. Should the Dockerfile/README be open after creation? Default is TRUE.

update_tar_gz

boolean. If TRUE and build_golem_from_source is also TRUE, 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 current folder '.'

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/.

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}');{appname}::run_app()\

Value

The {dockerfiler} object, invisibly.

Examples

# \donttest{
# Add a standard Dockerfile
if (interactive()) {
  add_dockerfile()
}
# Crete a 'deploy' folder containing everything needed to deploy
# the golem using docker based on {renv}
if (interactive()) {
  add_dockerfile_with_renv(
    # lockfile = "renv.lock", # uncomment to use existing renv.lock file
    output_dir = "deploy"
  )
}
# Add a Dockerfile for ShinyProxy
if (interactive()) {
  add_dockerfile_shinyproxy()
}

# Crete a 'deploy' folder containing everything needed to deploy
# the golem with ShinyProxy using docker based on {renv}
if (interactive()) {
  add_dockerfile_with_renv(
    # lockfile = "renv.lock",# uncomment to use existing renv.lock file
    output_dir = "deploy"
  )
}

# Add a Dockerfile for Heroku
if (interactive()) {
  add_dockerfile_heroku()
}
# }