This function exports the result from resolve()
to a Docker file. For R version >= 3.1.0, the Dockerfile is based on the versioned Rocker image.
For R version < 3.1.0, the Dockerfile is based on Debian and it compiles R from source.
Usage
dockerize(
rang,
output_dir,
materials_dir = NULL,
post_installation_steps = NULL,
image = c("r-ver", "rstudio", "tidyverse", "verse", "geospatial"),
rang_as_comment = TRUE,
cache = FALSE,
verbose = TRUE,
lib = NA,
cran_mirror = "https://cran.r-project.org/",
check_cran_mirror = TRUE,
bioc_mirror = "https://bioconductor.org/packages/",
no_rocker = FALSE,
debian_version = c("lenny", "squeeze", "wheezy", "jessie", "stretch"),
skip_r17 = TRUE,
insert_readme = TRUE,
copy_all = FALSE,
method = c("auto", "evercran", "rocker", "debian")
)
dockerize_rang(...)
dockerise(...)
dockerise_rang(...)
Arguments
- rang
output from
resolve()
- output_dir
character, where to put the Docker file and associated content
- materials_dir
character, path to the directory containing additional resources (e.g. analysis scripts) to be copied into
output_dir
and in turn into the Docker container- post_installation_steps
character, additional steps to be added before the
CMD
part of the Dockerfile, see an example below- image
character, which versioned Rocker image to use. Can only be "r-ver", "rstudio", "tidyverse", "verse", "geospatial" This applies only to R version >= 3.1
- rang_as_comment
logical, whether to write resolved result and the steps to reproduce the file to
path
as comment- cache
logical, whether to cache the packages now. Please note that the system requirements are not cached. For query with non-CRAN packages, this option is strongly recommended. For query with local packages, this must be TRUE regardless of R version. For R version < 3.1, this must be also TRUE if there is any non-CRAN packages.
- verbose
logical, pass to
install.packages()
, the negated value is also passed asquiet
to bothinstall.packages()
anddownload.file()
.- lib
character, pass to
install.packages()
. By default, it is NA (to install the packages to the default location)- cran_mirror
character, which CRAN mirror to use
- check_cran_mirror
logical, whether to check the CRAN mirror
- bioc_mirror
character, which Bioconductor mirror to use
- no_rocker
logical, whether to skip using Rocker images even when an appropriate version is available. Please keep this as
FALSE
unless you know what you are doing- debian_version
when Rocker images are not used, which EOL version of Debian to use. Can only be "lenny", "etch", "squeeze", "wheezy", "jessie", "stretch". Please keep this as default "lenny" unless you know what you are doing
- skip_r17
logical, whether to skip R 1.7.x. Currently, it is not possible to compile R 1.7.x (R 1.7.0 and R 1.7.1) with the method provided by
rang
. It affectssnapshot_date
from 2003-04-16 to 2003-10-07. Whenskip_r17
is TRUE andsnapshot_date
is within the aforementioned range, R 1.8.0 is used instead- insert_readme
logical, whether to insert a README file
- copy_all
logical, whether to copy everything in the current directory into the container. If
inst/rang
is detected inoutput_dir
, this is coerced to TRUE.- method
character, can only be "auto", "evercran", "rocker", or "debian". Select which base image is used. "auto" (the default) selects the best option based on the R version. "evercran" is experimental.
- ...
arguments to be passed to
dockerize
Details
The idea behind this is to determine the installation order of R packages locally. Then, the installation script can be deployed to another
fresh R session to install R packages. dockerize()
and apptainerize()
are more reasonable ways because a fresh R session with all system requirements
is provided.
References
The Rocker Project Ripley, B. (2005) Packages and their Management in R 2.1.0. R News, 5(1):8--11.
Examples
# \donttest{
if (interactive()) {
graph <- resolve(pkgs = c("openNLP", "LDAvis", "topicmodels", "quanteda"),
snapshot_date = "2020-01-16")
dockerize(graph, ".")
## An example of using post_installation_steps to install quarto
install_quarto <- c("RUN apt-get install -y curl git && \\
curl -LO https://quarto.org/download/latest/quarto-linux-amd64.deb && \\
dpkg -i quarto-linux-amd64.deb && \\
quarto install tool tinytex")
dockerize(graph, ".", post_installation_steps = install_quarto)
}
# }