Title: | Easy Dockerfile Creation from R |
Version: | 0.2.5 |
Description: | Build a Dockerfile straight from your R session. 'dockerfiler' allows you to create step by step a Dockerfile, and provide convenient tools to wrap R code inside this Dockerfile. |
License: | MIT + file LICENSE |
URL: | https://thinkr-open.github.io/dockerfiler/, https://github.com/ThinkR-open/dockerfiler |
BugReports: | https://github.com/ThinkR-open/dockerfiler/issues |
Imports: | attempt (≥ 0.3.1), cli (≥ 2.3.0), desc (≥ 1.2.0), fs (≥ 1.5.0), glue (≥ 1.4.2), jsonlite (≥ 1.7.2), memoise, pak (≥ 0.6.0), pkgbuild (≥ 1.2.0), purrr, R6 (≥ 2.5.0), remotes (≥ 2.2.0), usethis (≥ 2.0.1), utils |
Suggests: | knitr (≥ 1.31), rmarkdown (≥ 2.6), testthat (≥ 3.0.0), withr |
VignetteBuilder: | knitr |
Config/fusen/version: | 0.6.0 |
Config/testthat/edition: | 3 |
Encoding: | UTF-8 |
RoxygenNote: | 7.3.2 |
NeedsCompilation: | no |
Packaged: | 2025-05-07 09:39:04 UTC; vincent |
Author: | Colin Fay |
Maintainer: | Colin Fay <contact@colinfay.me> |
Repository: | CRAN |
Date/Publication: | 2025-05-07 12:10:05 UTC |
dockerfiler: Easy Dockerfile Creation from R
Description
Build a Dockerfile straight from your R session. 'dockerfiler' allows you to create step by step a Dockerfile, and provide convenient tools to wrap R code inside this Dockerfile.
Author(s)
Maintainer: Colin Fay contact@colinfay.me (ORCID)
Authors:
Vincent Guyader vincent@thinkr.fr (ORCID)
Josiah Parry josiah.parry@gmail.com (ORCID)
Sébastien Rochette sebastien@thinkr.fr (ORCID)
See Also
Useful links:
Report bugs at https://github.com/ThinkR-open/dockerfiler/issues
A Dockerfile template
Description
A Dockerfile template
A Dockerfile template
Public fields
Dockerfile
The dockerfile content.
Methods
Public methods
Method new()
Create a new Dockerfile object.
Usage
Dockerfile$new(FROM = "rocker/r-base", AS = NULL)
Arguments
FROM
The base image.
AS
The name of the image.
Returns
A Dockerfile object.
Method RUN()
Add a RUN command.
Usage
Dockerfile$RUN(cmd)
Arguments
cmd
The command to add.
Returns
the Dockerfile object, invisibly.
Method ADD()
Add a ADD command.
Usage
Dockerfile$ADD(from, to, force = TRUE)
Arguments
from
The source file.
to
The destination file.
force
If TRUE, overwrite the destination file.
Returns
the Dockerfile object, invisibly.
Method COPY()
Add a COPY command.
Usage
Dockerfile$COPY(from, to, stage = NULL, force = TRUE)
Arguments
from
The source file.
to
The destination file.
stage
Optional. Name of the build stage (e.g.,
"builder"
) to copy files from. This corresponds to the--from=
part in a Dockerfile COPY instruction (e.g.,COPY --from=builder /source /dest
). IfNULL
, the--from=
argument is omitted.force
If TRUE, overwrite the destination file.
Returns
the Dockerfile object, invisibly.
Method WORKDIR()
Add a WORKDIR command.
Usage
Dockerfile$WORKDIR(where)
Arguments
where
The working directory.
Returns
the Dockerfile object, invisibly.
Method EXPOSE()
Add a EXPOSE command.
Usage
Dockerfile$EXPOSE(port)
Arguments
port
The port to expose.
Returns
the Dockerfile object, invisibly.
Method VOLUME()
Add a VOLUME command.
Usage
Dockerfile$VOLUME(volume)
Arguments
volume
The volume to add.
Returns
the Dockerfile object, invisibly.
Method CMD()
Add a CMD command.
Usage
Dockerfile$CMD(cmd)
Arguments
cmd
The command to add.
Returns
the Dockerfile object, invisibly.
Method LABEL()
Add a LABEL command.
Usage
Dockerfile$LABEL(key, value)
Arguments
key, value
The key and value of the label.
Returns
the Dockerfile object, invisibly.
Method ENV()
Add a ENV command.
Usage
Dockerfile$ENV(key, value)
Arguments
key, value
The key and value of the label.
Returns
the Dockerfile object, invisibly.
Method ENTRYPOINT()
Add a ENTRYPOINT command.
Usage
Dockerfile$ENTRYPOINT(cmd)
Arguments
cmd
The command to add.
Returns
the Dockerfile object, invisibly.
Method USER()
Add a USER command.
Usage
Dockerfile$USER(user)
Arguments
user
The user to add.
Returns
the Dockerfile object, invisibly.
Method ARG()
Add a ARG command.
Usage
Dockerfile$ARG(arg, ahead = FALSE)
Arguments
arg
The argument to add.
ahead
If TRUE, add the argument at the beginning of the Dockerfile.
Returns
the Dockerfile object, invisibly.
Method ONBUILD()
Add a ONBUILD command.
Usage
Dockerfile$ONBUILD(cmd)
Arguments
cmd
The command to add.
Returns
the Dockerfile object, invisibly.
Method STOPSIGNAL()
Add a STOPSIGNAL command.
Usage
Dockerfile$STOPSIGNAL(signal)
Arguments
signal
The signal to add.
Returns
the Dockerfile object, invisibly.
Method HEALTHCHECK()
Add a HEALTHCHECK command.
Usage
Dockerfile$HEALTHCHECK(check)
Arguments
check
The check to add.
Returns
the Dockerfile object, invisibly.
Method SHELL()
Add a SHELL command.
Usage
Dockerfile$SHELL(shell)
Arguments
shell
The shell to add.
Returns
the Dockerfile object, invisibly.
Method MAINTAINER()
Add a MAINTAINER command.
Usage
Dockerfile$MAINTAINER(name, email)
Arguments
name, email
The name and email of the maintainer.
Returns
the Dockerfile object, invisibly.
Method custom()
Add a custom command.
Usage
Dockerfile$custom(base, cmd)
Arguments
base, cmd
The base and command to add.
Returns
the Dockerfile object, invisibly.
Method COMMENT()
Add a comment.
Usage
Dockerfile$COMMENT(comment)
Arguments
comment
The comment to add.
Returns
the Dockerfile object, invisibly.
Method print()
Print the Dockerfile.
Usage
Dockerfile$print()
Returns
used for side effect
Method write()
Write the Dockerfile to a file.
Usage
Dockerfile$write(as = "Dockerfile", append = FALSE)
Arguments
as
The file to write to.
append
boolean, if TRUE append to file.
Returns
used for side effect
Method switch_cmd()
Switch commands.
Usage
Dockerfile$switch_cmd(a, b)
Arguments
a, b
The commands to switch.
Returns
the Dockerfile object, invisibly.
Method remove_cmd()
Remove a command.
Usage
Dockerfile$remove_cmd(where)
Arguments
where
The commands to remove.
Returns
the Dockerfile object, invisibly.
Method add_after()
Add a command after another.
Usage
Dockerfile$add_after(cmd, after)
Arguments
cmd
The command to add.
after
Where to add the cmd
Returns
the Dockerfile object, invisibly.
Method clone()
The objects of this class are cloneable with this method.
Usage
Dockerfile$clone(deep = FALSE)
Arguments
deep
Whether to make a deep clone.
Examples
my_dock <- Dockerfile$new()
Compact Sysreqs
Description
Compact Sysreqs
Usage
compact_sysreqs(
pkg_installs,
update_cmd = "apt-get update -y",
install_cmd = "apt-get install -y",
clean_cmd = "rm -rf /var/lib/apt/lists/*"
)
Arguments
pkg_installs |
pkg_sysreqs as vector, |
update_cmd |
command used to update packages, "apt-get update -y" by default |
install_cmd |
command used to install packages, "apt-get install -y" by default |
clean_cmd |
command used to clean package folder, "rm -rf /var/lib/apt/lists/*" by default |
Value
vector of compacted command to run to install sysreqs
Examples
pkg_installs <- list("apt-get install -y htop", "apt-get install -y top")
compact_sysreqs(pkg_installs)
Create a Dockerfile from a DESCRIPTION
Description
Create a Dockerfile from a DESCRIPTION
Usage
dock_from_desc(
path = "DESCRIPTION",
FROM = paste0("rocker/r-ver:", R.Version()$major, ".", R.Version()$minor),
AS = NULL,
sysreqs = TRUE,
repos = c(CRAN = "https://cran.rstudio.com/"),
expand = FALSE,
update_tar_gz = TRUE,
build_from_source = TRUE,
extra_sysreqs = NULL
)
Arguments
path |
path to the DESCRIPTION file to use as an input. |
FROM |
The FROM of the Dockerfile. Default is
FROM rocker/r-ver: |
AS |
The AS of the Dockerfile. Default it NULL. |
sysreqs |
boolean. If TRUE, the Dockerfile will contain sysreq installation. |
repos |
character. The URL(s) of the repositories to use for |
expand |
boolean. If |
update_tar_gz |
boolean. If |
build_from_source |
boolean. If |
extra_sysreqs |
character vector. Extra debian system requirements. Will be installed with apt-get install. |
Value
Dockerfile
Create a Dockerfile from an renv.lock
file
Description
Create a Dockerfile from an renv.lock
file
Usage
dock_from_renv(
lockfile = "renv.lock",
distro = NULL,
FROM = "rocker/r-base",
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",
renv_version
)
Arguments
lockfile |
Path to an |
distro |
|
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. |
renv_version |
character. The renv version to use in the generated Dockerfile. By default, it is set to the version specified in the |
Details
System requirements for packages are provided
through RStudio Package Manager via the pak
package. The install commands provided from pak
are added as RUN
directives within the Dockerfile
.
The R version is taken from the renv.lock
file.
Packages are installed using renv::restore()
which ensures
that the proper package version and source is used when installed.
Value
A R6 object of class Dockerfile
.
Examples
## Not run:
dock <- dock_from_renv("renv.lock", distro = "xenial")
dock$write("Dockerfile")
## End(Not run)
Create a dockerignore file
Description
Create a dockerignore file
Usage
docker_ignore_add(path)
Arguments
path |
Where to write the file |
Value
The path to the .dockerignore
file, invisibly.
Examples
## Not run:
docker_ignore_add()
## End(Not run)
Get system requirements
Description
This function retrieves information about the
system requirements using the pak::pkg_sysreqs()
.
Usage
get_sysreqs(packages, quiet = TRUE, batch_n = 30)
Arguments
packages |
character vector. Packages names. |
quiet |
Boolean. If |
batch_n |
numeric. Number of simultaneous packages to ask. |
Value
A vector of system requirements.
Parse a Dockerfile
Description
Create a Dockerfile object from a Dockerfile.
Usage
parse_dockerfile(path)
Arguments
path |
path to the Dockerfile |
Value
A Dockerfile object
Examples
parse_dockerfile(system.file("Dockerfile", package = "dockerfiler"))
Turn an R call into an Unix call
Description
Turn an R call into an Unix call
Usage
r(code)
Arguments
code |
the function to call |
Value
an unix R call
Examples
r(print("yeay"))
r(install.packages("plumber", repo = "http://cran.irsn.fr/"))
Internalised renv
Description
https://rstudio.github.io/renv/reference/vendor.html?q=vendor
Usage
renv
Format
An object of class environment
of length 1446.