-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathDockerfile
73 lines (61 loc) · 1.59 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# base image
FROM rocker/shiny:4.1.0 AS base
## remove example apps
RUN rm -rf /srv/shiny-server/*
## install system libraries
RUN apt-get update && apt-get install -y \
software-properties-common
## install R package dependencies
RUN add-apt-repository ppa:ubuntugis/ubuntugis-unstable && \
apt-get update && apt-get install -y \
libcurl4-gnutls-dev \
libssl-dev \
libudunits2-dev \
libudunits2-dev \
libgdal-dev \
libgeos-dev \
libproj-dev \
coinor-libcbc-dev \
coinor-libclp-dev \
coinor-libsymphony-dev \
coinor-libcgl-dev \
libharfbuzz-dev \
libfribidi-dev \
libfontconfig1-dev \
&& rm -rf /var/lib/apt/lists/*
## install R packages
RUN mkdir /renv
COPY renv.lock /renv/renv.lock
RUN cd /renv && \
Rscript -e 'install.packages(c("renv", "remotes"))' && \
Rscript -e 'renv::restore()'
## install app
RUN mkdir /app
COPY inst /app/inst
COPY man /app/man
COPY R /app/R
COPY .Rbuildignore /app
COPY DESCRIPTION /app
COPY NAMESPACE /app
RUN cd /app && \
Rscript -e 'remotes::install_local(upgrade = "never")'
# set command
CMD ["/bin/bash"]
# shiny image
FROM base AS shiny
## set user
USER shiny
## select port
EXPOSE 3838
## configure shiny
## store environmental variables
ENV R_SHINY_PORT=3838
ENV R_SHINY_HOST=0.0.0.0
RUN env | grep R_SHINY_PORT > /home/shiny/.Renviron && \
env | grep R_SHINY_HOST >> /home/shiny/.Renviron
## set working directory
RUN mkdir /home/shiny/app
COPY app.R /home/shiny/app/app.R
WORKDIR /home/shiny/app
## run app
CMD ["/usr/local/bin/Rscript", "/home/shiny/app/app.R"]