From 936561d6a32b12ac1a19c7b766524421600b8a0a Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 22 Jun 2025 00:27:12 +0200 Subject: [PATCH 1/3] feat: In dock_from_renv, introduce build-arg RENV_PATHS_CACHE (default /root/.cache/R/renv) and propagate it as an ENV variable for configurable renv cache paths. feat: In dock_from_renv, update cache mounting to --mount=type=cache,id=renv-cache,target=${RENV_PATHS_CACHE} and use renv::restore(clean=FALSE) to speed up and harden the Docker build. --- DESCRIPTION | 2 +- NEWS.md | 5 +++++ R/dock_from_renv.R | 6 +++++- dockerfiler.Rproj | 1 + 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 2fac6cc..e6f176a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: dockerfiler Title: Easy Dockerfile Creation from R -Version: 0.2.5 +Version: 0.2.6 Authors@R: c( person("Colin", "Fay", , "contact@colinfay.me", role = c("cre", "aut"), comment = c(ORCID = "0000-0001-7343-1846")), diff --git a/NEWS.md b/NEWS.md index f173fee..34d9be2 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,8 @@ +# dockerfiler dev version + +- feat: In dock_from_renv, introduce build-arg RENV_PATHS_CACHE (default /root/.cache/R/renv) and propagate it as an ENV variable for configurable renv cache paths. +- feat: In dock_from_renv, update cache mounting to --mount=type=cache,id=renv-cache,target=${RENV_PATHS_CACHE} and use renv::restore(clean=FALSE) to speed up and harden the Docker build. + # dockerfiler 0.2.5 - feat: allow multistage dockerfile creation diff --git a/R/dock_from_renv.R b/R/dock_from_renv.R index a0d863d..ee3bd9d 100644 --- a/R/dock_from_renv.R +++ b/R/dock_from_renv.R @@ -84,6 +84,9 @@ dock_from_renv <- function( ), AS = AS ) + dock$ARG("RENV_PATHS_CACHE=/root/.cache/R/renv") + dock$ENV(key = "RENV_PATHS_CACHE",value = "${RENV_PATHS_CACHE}") + if (!is.null(user)) { dock$USER(user) } @@ -240,7 +243,8 @@ dock_from_renv <- function( } dock$COPY(basename(lockfile), "renv.lock") - dock$RUN("--mount=type=cache,id=renv-cache,target=/root/.cache/R/renv R -e 'renv::restore()'") + dock$RUN("--mount=type=cache,id=renv-cache,target=${RENV_PATHS_CACHE} R -e 'renv::restore(clean = FALSE)'") + dock } diff --git a/dockerfiler.Rproj b/dockerfiler.Rproj index cba1b6b..4904183 100644 --- a/dockerfiler.Rproj +++ b/dockerfiler.Rproj @@ -1,4 +1,5 @@ Version: 1.0 +ProjectId: aea0fc85-ff2f-4b78-a34d-39f668860543 RestoreWorkspace: No SaveWorkspace: No From db5e9f4b06829fd217898089b0daf89da57e1134 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 22 Jun 2025 00:28:51 +0200 Subject: [PATCH 2/3] set 0.2.5.9001 version --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index e6f176a..b4e378f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: dockerfiler Title: Easy Dockerfile Creation from R -Version: 0.2.6 +Version: 0.2.5.9001 Authors@R: c( person("Colin", "Fay", , "contact@colinfay.me", role = c("cre", "aut"), comment = c(ORCID = "0000-0001-7343-1846")), From 8db6ec4fafbae5bd89f71b4af367bc2732fb7bc5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 22 Jun 2025 00:39:57 +0200 Subject: [PATCH 3/3] update test --- tests/testthat/Dockerfile | 7 ------- tests/testthat/renv_Dockerfile | 4 +++- 2 files changed, 3 insertions(+), 8 deletions(-) delete mode 100644 tests/testthat/Dockerfile diff --git a/tests/testthat/Dockerfile b/tests/testthat/Dockerfile deleted file mode 100644 index fceebae..0000000 --- a/tests/testthat/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM rocker/r-base:4.1.0 -RUN apt-get update -y && apt-get install -y make zlib1g-dev pandoc libicu-dev && rm -rf /var/lib/apt/lists/* -RUN mkdir -p /usr/local/lib/R/etc/ /usr/lib/R/etc/ -RUN echo "options(renv.config.pak.enabled = TRUE, repos = c(CRAN = 'https://cran.rstudio.com/'), download.file.method = 'libcurl', Ncpus = 4)" | tee /usr/local/lib/R/etc/Rprofile.site | tee /usr/lib/R/etc/Rprofile.site -RUN R -e 'install.packages(c("renv","remotes"))' -COPY renv.lock renv.lock -RUN R -e 'renv::restore()' diff --git a/tests/testthat/renv_Dockerfile b/tests/testthat/renv_Dockerfile index 1f1ba0d..b518ab5 100644 --- a/tests/testthat/renv_Dockerfile +++ b/tests/testthat/renv_Dockerfile @@ -1,8 +1,10 @@ FROM rocker/verse:4.1.2 +ARG RENV_PATHS_CACHE=/root/.cache/R/renv +ENV "RENV_PATHS_CACHE"="${RENV_PATHS_CACHE}" RUN fake sys reqs RUN mkdir -p /usr/local/lib/R/etc/ /usr/lib/R/etc/ RUN echo "options(renv.config.pak.enabled = FALSE, repos = fake repos, download.file.method = 'libcurl', Ncpus = 4)" | tee /usr/local/lib/R/etc/Rprofile.site | tee /usr/lib/R/etc/Rprofile.site RUN R -e 'install.packages("remotes")' RUN R -e 'remotes::install_version("renv", version = "0.0.0")' COPY renv.lock renv.lock -RUN --mount=type=cache,id=renv-cache,target=/root/.cache/R/renv R -e 'renv::restore()' +RUN --mount=type=cache,id=renv-cache,target=${RENV_PATHS_CACHE} R -e 'renv::restore(clean = FALSE)'