From 6f52d6f3e4c7cf643d994e24eb1ab0a05b47e620 Mon Sep 17 00:00:00 2001
From: Perreal Guillaume <guillaume.perreal@irstea.fr>
Date: Tue, 15 Jan 2019 12:19:37 +0100
Subject: [PATCH] Updated the Dockerfile to reduce size.

---
 Dockerfile | 35 +++++++++++++++++++++++------------
 1 file changed, 23 insertions(+), 12 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index 0b28237..1eba94c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,32 +1,43 @@
-FROM rocker/shiny
+ARG R_TAG=3.5.2
+FROM rocker/shiny:$R_TAG AS builder
 
+# Install and build R packages from CRAN and BioConduit, removing documentation and tests
 RUN R -e 'install.packages( \
     c("BiocManager", "DT", "dplyr", "factoextra", "glue", "microbenchmark", "shinycustomloader", "shinydashboard"), \
     Ncpus='$(nproc)', \
     clean=1, \
-    verbose=1 \
     )' \
-    && rm /usr/local/lib/R/*/*/{doc,html,help,unitTests}
-
-RUN R -e 'BiocManager::install("phyloseq", Ncpus='$(nproc)', clean=1)' \
-    && rm /usr/local/lib/R/*/*/{doc,html,help,unitTests}
+    && R -e 'BiocManager::install("phyloseq", Ncpus='$(nproc)', clean=1)' \
+    && rm -rf /usr/local/lib/R/*/*/{doc,html,help,unitTests}
 
+# Use Yelp/dumb-init as entrypoint to properly handle Unix signals
 ARG DUMB_INIT_VERSION=1.2.2
-RUN wget -O /sbin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_amd64 \
-    && chmod +x /sbin/dumb-init
+ADD https://github.com/Yelp/dumb-init/releases/download/v${DUMB_INIT_VERSION}/dumb-init_${DUMB_INIT_VERSION}_amd64 /sbin/dumb-init
+RUN chmod +x /sbin/dumb-init
 ENTRYPOINT ["/sbin/dumb-init", "--"]
 
+# Start the shiny server by default
 CMD ["/usr/bin/shiny-server.sh"]
 
+# Clear /srv/shiny-server/ and create /var/lib/shiny-server
 RUN rm -rf /srv/shiny-server/* \
-    && mkdir -p /srv/shiny-server/easy16s /var/lib/shiny-server
+    && mkdir -p var/lib/shiny-server
+
+# Install easy16S sources and resource
+ADD *.R /srv/shiny-server/
+ADD www /srv/shiny-server/www
 
-ADD *.R /srv/shiny-server/easy16s/
-ADD demo/demo.RData demo/chaillou.* /srv/shiny-server/easy16s/demo/
-ADD www /srv/shiny-server/easy16s/www
+# Build demo data
+ADD demo /tmp/demo
+RUN cd /tmp/demo \
+    && R -f make-demo.R \
+    && mkdir -p /srv/shiny-server/demo \
+    && ls -la && cp demo.RData /srv/shiny-server/demo
 
+# Fix file permissions
 RUN chmod -R a+rX /srv/shiny-server/ \
     && chgrp shiny /var/lib/shiny-server \
     && chmod g+rwxs /var/lib/shiny-server
 
+# Run with a non-privileged user
 USER shiny
-- 
GitLab