From 91c80cc4a465eb398cfcddfbbb0de0ca1d81cadb Mon Sep 17 00:00:00 2001 From: Vincent Guyader Date: Wed, 7 May 2025 08:12:24 +0000 Subject: [PATCH] add dedicated cache for `renv::restore` --- NEWS.md | 1 + R/dock_from_renv.R | 17 ++++++++--------- man/dockerfiler-package.Rd | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/NEWS.md b/NEWS.md index 19cac5e..28ce5d8 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,7 @@ # dockerfiler 0.2.4.9xxx - allow multistage dockerfile creation +- add dedicated cache for `renv::restore` # dockerfiler 0.2.4 diff --git a/R/dock_from_renv.R b/R/dock_from_renv.R index e2168fe..c2cfebf 100644 --- a/R/dock_from_renv.R +++ b/R/dock_from_renv.R @@ -18,9 +18,9 @@ pkg_sysreqs_mem <- memoise::memoise( #' @param repos character. The URL(s) of the repositories to use for `options("repos")`. #' @param extra_sysreqs character vector. Extra debian system requirements. #' Will be installed with apt-get install. -#' @param renv_version character. The renv version to use in the generated Dockerfile. By default, it is set to the version specified in the `renv.lock` file. +#' @param renv_version character. The renv version to use in the generated Dockerfile. By default, it is set to the version specified in the `renv.lock` file. #' If the `renv.lock` file does not specify a renv version, -#' the version of renv bundled with dockerfiler, +#' the version of renv bundled with dockerfiler, #' specifically `r dockerfiler::renv$initialize();toString(dockerfiler::renv$the$metadata$version)`, will be used. #' If you set it to `NULL`, the latest available version of renv will be used. #' @param use_pak boolean. If `TRUE` use pak to deal with dependencies during `renv::restore()`. FALSE by default @@ -89,20 +89,20 @@ dock_from_renv <- function( dock$USER(user) } # get renv version - + if (missing(renv_version)) { if (!is.null(lock$Packages$renv$Version)) { renv_version <- lock$Packages$renv$Version } else { renv_version <- dockerfiler::renv$the$metadata$version } - } + } - message("renv version = ", + message("renv version = ", ifelse(!is.null(renv_version),renv_version,"the must up to date in the repos") ) - - + + distro_args <- list(sysreqs_platform = sysreqs_platform) install_cmd <- "apt-get install -y" @@ -241,8 +241,7 @@ dock_from_renv <- function( } dock$COPY(basename(lockfile), "renv.lock") - dock$RUN("R -e 'renv::restore()'") - + dock$RUN("--mount=type=cache,id=renv-cache,target=/root/.cache/R/renv R -e 'renv::restore()'") dock } diff --git a/man/dockerfiler-package.Rd b/man/dockerfiler-package.Rd index 98127d4..34f8a28 100644 --- a/man/dockerfiler-package.Rd +++ b/man/dockerfiler-package.Rd @@ -11,6 +11,7 @@ Build a Dockerfile straight from your R session. 'dockerfiler' allows you to cre \seealso{ Useful links: \itemize{ + \item \url{https://thinkr-open.github.io/dockerfiler/} \item \url{https://github.com/ThinkR-open/dockerfiler} \item Report bugs at \url{https://github.com/ThinkR-open/dockerfiler/issues} }