cjerzak commited on
Commit
028884f
·
verified ·
1 Parent(s): 2b6dc80

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +74 -10
Dockerfile CHANGED
@@ -1,14 +1,78 @@
1
- FROM rocker/r-base:latest
2
-
3
  WORKDIR /code
4
 
5
- RUN install2.r --error \
6
- shiny \
7
- dplyr \
8
- ggplot2 \
9
- readr \
10
- ggExtra
11
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  COPY . .
13
 
14
- CMD ["R", "--quiet", "-e", "shiny::runApp(host='0.0.0.0', port=7860)"]
 
 
 
 
 
1
+ # syntax=docker/dockerfile:1
2
+ FROM rocker/r2u:22.04
3
  WORKDIR /code
4
 
5
+ ARG DEBIAN_FRONTEND=noninteractive
6
+
7
+ # ------------------------------------------------------------------------------
8
+ # System deps
9
+ # ------------------------------------------------------------------------------
10
+ RUN apt-get update -y && apt-get install -y --no-install-recommends \
11
+ wget bzip2 git unzip ca-certificates locales tzdata \
12
+ build-essential gfortran \
13
+ libcurl4-openssl-dev libssl-dev libxml2-dev libgit2-dev \
14
+ libopenblas-dev liblapack-dev \
15
+ libjpeg-dev libpng-dev libtiff5-dev \
16
+ && rm -rf /var/lib/apt/lists/*
17
+
18
+ ENV LC_ALL=C.UTF-8 LANG=C.UTF-8 HF_HUB_DISABLE_TELEMETRY=1 PIP_NO_CACHE_DIR=1
19
+
20
+ # ------------------------------------------------------------------------------
21
+ # Fast-install R packages via Debian, when available
22
+ # ------------------------------------------------------------------------------
23
+ ARG APT_R_PKGS="\
24
+ r-cran-shiny r-cran-dplyr r-cran-ggplot2 r-cran-readr r-cran-ggextra \
25
+ r-cran-dt r-cran-shinydashboard r-cran-reticulate \
26
+ r-cran-remotes r-cran-data.table r-cran-stringdist r-cran-fastmatch \
27
+ r-cran-stringr r-cran-rfast r-cran-foreach r-cran-doparallel r-cran-digest \
28
+ r-cran-scales r-cran-tidyr"
29
+ RUN set -eux; \
30
+ apt-get update -y; \
31
+ for pkg in $APT_R_PKGS; do \
32
+ if apt-cache show "$pkg" >/dev/null 2>&1; then \
33
+ echo "Installing $pkg via apt ..."; \
34
+ if ! apt-get install -y --no-install-recommends "$pkg"; then \
35
+ echo "WARN: apt install failed for $pkg; will try R fallback."; \
36
+ fi; \
37
+ else \
38
+ echo "INFO: $pkg not found in apt; will try R fallback."; \
39
+ fi; \
40
+ done; \
41
+ rm -rf /var/lib/apt/lists/*
42
+
43
+ # ------------------------------------------------------------------------------
44
+ # R fallback (pak) for anything missing
45
+ # ------------------------------------------------------------------------------
46
+ RUN Rscript - <<'RSCRIPT'
47
+ options(Ncpus = parallel::detectCores())
48
+ cran <- "https://cloud.r-project.org"
49
+
50
+ req <- c(
51
+ "shiny","dplyr","ggplot2","readr","ggExtra","DT","shinydashboard",
52
+ "reticulate","remotes","data.table","stringdist","fastmatch",
53
+ "stringr","Rfast","foreach","doParallel","digest",
54
+ # app-specific
55
+ "bslib","shinyWidgets","bsplus","magrittr","tidyr","scales","shinycssloaders"
56
+ )
57
+ installed <- rownames(installed.packages())
58
+ need <- setdiff(req, installed)
59
+
60
+ if (length(need)) {
61
+ if (!requireNamespace("pak", quietly = TRUE)) {
62
+ install.packages("pak", repos = "https://r-lib.github.io/p/pak/stable")
63
+ }
64
+ ok <- tryCatch({ pak::pak(need); TRUE }, error = function(e) FALSE)
65
+ if (!ok) install.packages(need, repos = cran)
66
+ }
67
+ RSCRIPT
68
+
69
+ # ------------------------------------------------------------------------------
70
+ # App code + data
71
+ # ------------------------------------------------------------------------------
72
  COPY . .
73
 
74
+ # ------------------------------------------------------------------------------
75
+ # Shiny entry point (honor $PORT; default 7860)
76
+ # ------------------------------------------------------------------------------
77
+ EXPOSE 7860
78
+ CMD ["R", "--quiet", "-e", "port <- as.integer(Sys.getenv('PORT', '7860')); shiny::runApp('/code', host='0.0.0.0', port=port)"]