|
2 | 2 | FROM rocker/r-ver:4.5.1 |
3 | 3 |
|
4 | 4 | # 2. Install system dependencies |
5 | | -# Note: Ubuntu 24.04 (Noble) uses libicu74, matching R 4.5 binaries |
6 | 5 | RUN apt-get update && apt-get install -y --no-install-recommends \ |
7 | 6 | libxml2-dev libssl-dev libcurl4-openssl-dev \ |
8 | 7 | libpng-dev libjpeg-dev zlib1g-dev libicu-dev \ |
9 | 8 | libglpk-dev gfortran pandoc \ |
10 | 9 | && rm -rf /var/lib/apt/lists/* |
11 | 10 |
|
12 | | -WORKDIR /project |
13 | | - |
14 | | -# 3. Use NOBLE (Ubuntu 24.04) binaries for R 4.5 |
| 11 | +# 3. Setup Environment for Speed and Persistence |
| 12 | +# We move the library to /opt/renv so it isn't overwritten when you mount /project |
| 13 | +ENV RENV_PATHS_LIBRARY=/opt/renv/library |
15 | 14 | ENV RENV_CONFIG_REPOS_OVERRIDE="https://packagemanager.posit.co/cran/__linux__/noble/latest" |
16 | 15 | ENV RENV_DOWNLOAD_METHOD="libcurl" |
17 | 16 |
|
| 17 | +WORKDIR /project |
| 18 | + |
18 | 19 | # 4. Setup and Restore |
| 20 | +# We restore specifically to the /opt path |
19 | 21 | COPY renv.lock .Rprofile ./ |
20 | 22 | COPY renv/activate.R renv/activate.R |
21 | | -RUN mkdir -p renv/library data |
22 | | -RUN R -e "options(Ncpus = parallel::detectCores()); renv::restore()" |
| 23 | +RUN mkdir -p /opt/renv/library |
| 24 | +RUN R -e "options(Ncpus = parallel::detectCores()); renv::restore(library='/opt/renv/library')" |
23 | 25 |
|
| 26 | +# 5. Copy Application Files |
24 | 27 | COPY *.Rmd ./ |
25 | 28 | COPY _site.ym[l] ./ |
26 | 29 |
|
27 | | -CMD ["R", "-e", "rmarkdown::render_site()"] |
| 30 | +# 6. Flexible Execution |
| 31 | +# This allows you to pass a custom yaml filename as an argument |
| 32 | +ENTRYPOINT ["sh", "-c", "R -e \"rmarkdown::render_site(config_file = '$1')\"", "--"] |
| 33 | + |
| 34 | +# Default argument if you don't provide one |
| 35 | +CMD ["_site.yml"] |
0 commit comments