MiLBSavant / Dockerfile
TimStats's picture
Update Dockerfile
60882c9 verified
Raw
History Blame Contribute Delete
1.71 kB
FROM rocker/shiny:latest
WORKDIR /code
# Install system dependencies in a single layer
RUN apt-get update && apt-get install -y \
libmagick++-dev \
imagemagick \
libcurl4-openssl-dev \
libssl-dev \
libfontconfig1-dev \
libfreetype6-dev \
libharfbuzz-dev \
libfribidi-dev \
libxml2-dev \
libcairo2-dev \
libxt-dev \
fonts-roboto \
cmake \
&& rm -rf /var/lib/apt/lists/*
# Set CRAN mirror once
RUN echo 'options(repos = c(CRAN = "https://cloud.r-project.org"))' > ~/.Rprofile
# Install core R packages first (split into smaller groups)
RUN R -e 'install.packages(c("remotes", "curl", "httr", "jsonlite", "bslib"))'
RUN R -e 'install.packages(c("ggplot2", "dplyr", "grid", "gridExtra", "gtable"))'
RUN R -e 'install.packages(c("patchwork", "readr"))'
# Install magick separately
RUN R -e 'install.packages("magick")'
# Install showtext
RUN R -e 'install.packages("showtext")'
# Install arrow last with optimized settings
ENV ARROW_R_DEV=TRUE
ENV NOT_CRAN=TRUE
# Try binary first, fall back to minimal build
RUN R -e 'tryCatch(install.packages("arrow", INSTALL_opts = "--no-test-load"), \
error = function(e) { \
Sys.setenv(LIBARROW_MINIMAL="true"); \
Sys.setenv(ARROW_WITH_ZLIB="OFF"); \
Sys.setenv(ARROW_WITH_ZSTD="OFF"); \
Sys.setenv(ARROW_WITH_LZ4="OFF"); \
Sys.setenv(ARROW_WITH_SNAPPY="OFF"); \
Sys.setenv(ARROW_WITH_BROTLI="OFF"); \
Sys.setenv(ARROW_WITH_PARQUET="ON"); \
install.packages("arrow", INSTALL_opts = "--no-test-load") \
})'
# Copy app files
COPY . .
# Expose port
EXPOSE 7860
# Run app
CMD ["R", "--quiet", "-e", "shiny::runApp(host='0.0.0.0', port=7860)"]