knitr::opts_chunk$set( eval = FALSE, collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
{dockerfiler}
The goal of {dockerfiler}
is to provide an easy way to create Dockerfiles from R.
You're reading the doc about version :
desc::desc_get_version()
The check results are:
devtools::check(quiet = TRUE)
You can install dockerfiler from GitHub with:
# install.packages("remotes") remotes::install_github("ThinkR-open/dockerfiler")
Or from CRAN with :
install.packages("dockerfiler")
By default, Dockerfiles are created with FROM "rocker/r-base"
.
You can set another FROM in new()
library(dockerfiler) # Create a dockerfile template my_dock <- Dockerfile$new() my_dock$MAINTAINER("Colin FAY", "contact@colinfay.me")
Wrap your raw R Code inside the r()
function to turn it into a bash command with R -e
.
my_dock$RUN(r(install.packages("attempt", repo = "http://cran.irsn.fr/")))
Classical Docker stuffs:
my_dock$RUN("mkdir /usr/scripts") my_dock$RUN("cd /usr/scripts") my_dock$COPY("plumberfile.R", "/usr/scripts/plumber.R") my_dock$COPY("torun.R", "/usr/scripts/torun.R") my_dock$EXPOSE(8000) my_dock$CMD("Rscript /usr/scripts/torun.R ")
See your Dockerfile :
my_dock
If you've made a mistake in your script, you can switch lines with the switch_cmd
method. This function takes as arguments the positions of the two cmd you want to switch :
# Switch line 8 and 7 my_dock$switch_cmd(8, 7) my_dock
You can also remove a cmd with remove_cmd
:
my_dock$remove_cmd(8) my_dock
This also works with a vector:
my_dock$remove_cmd(5:7) my_dock
add_after
add a command after a given line.
my_dock$add_after( cmd = "RUN R -e 'remotes::install_cran(\"rlang\")'", after = 3 )
Save your Dockerfile:
my_dock$write()
You can use a DESCRIPTION file to create a Dockerfile that installs the dependencies and the package.
my_dock <- dock_from_desc("DESCRIPTION") my_dock my_dock$CMD(r(library(dockerfiler))) my_dock$add_after( cmd = "RUN R -e 'remotes::install_cran(\"rlang\")'", after = 3 ) my_dock
dir_build <- tempfile(pattern = "renv") dir.create(dir_build) # Create a lockfile the_lockfile <- file.path(dir_build, "renv.lock") custom_packages <- c( # attachment::att_from_description(), "renv", "cli", "glue", "golem", "shiny", "stats", "utils", "testthat", "knitr" ) renv::snapshot( packages = custom_packages, lockfile = the_lockfile, prompt = FALSE )
my_dock <- dock_from_renv( lockfile = the_lockfile, distro = "focal", FROM = "rocker/verse" ) my_dock
Questions and feedbacks welcome!
You want to contribute ? Open a PR :) If you encounter a bug or want to suggest an enhancement, please open an issue.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.