Spaces:
Sleeping
Sleeping
| 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)"] |