jma / Dockerfile
alexdum's picture
chore: harden Dockerfile by running as non-root user and updating R package installation process
11d1d35
FROM rocker/shiny-verse:latest
RUN useradd -m -u 1000 user
ENV HOME=/home/user \
PATH=/home/user/.local/bin:$PATH
RUN mkdir -p $HOME/app && chown user:user $HOME/app
WORKDIR $HOME/app
# Install system dependencies for mapgl/sf
RUN apt-get update && apt-get install -y \
libudunits2-dev \
libgdal-dev \
libgeos-dev \
libproj-dev \
&& rm -rf /var/lib/apt/lists/*
# Install R packages
# listed explicitly to ensure all dependencies are met
RUN install2.r --error \
shiny \
bsicons \
mapgl \
sf \
dplyr \
readr \
DT \
plotly \
ggplot2 \
shinyjs \
later \
htmltools \
rvest \
stringr \
lubridate \
purrr \
jsonlite \
curl \
httr \
writexl \
remotes
RUN installGithub.r \
rstudio/bslib \
rstudio/httpuv
COPY --chown=user . $HOME/app
USER user
EXPOSE 7860
CMD ["R", "--quiet", "-e", "shiny::runApp('/home/user/app', host='0.0.0.0', port=7860)"]