FROM rocker/r2u:latest WORKDIR /code # Install system dependencies + Python RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ libcurl4-openssl-dev \ libssl-dev \ libxml2-dev \ python3 \ python3-pip \ python3-dev \ libpython3-dev \ && rm -rf /var/lib/apt/lists/* # Install huggingface_hub Python package RUN pip3 install huggingface_hub --break-system-packages # Tell reticulate which Python to use ENV RETICULATE_PYTHON=/usr/bin/python3 # Heavy R packages (cached separately so they don't rebuild often) RUN install2.r --error --skipinstalled \ arrow \ xgboost \ recipes # Lighter R packages (this layer rebuilds if you add/remove packages) RUN install2.r --error --skipinstalled \ shiny \ shinydashboard \ shinyBS \ DT \ dplyr \ readr \ stringr \ jsonlite \ httr \ progressr \ RCurl \ curl \ base64enc \ reticulate # Copy app files (changes here won't trigger package reinstall) COPY . . EXPOSE 7860 CMD ["R", "--quiet", "-e", "shiny::runApp(host='0.0.0.0', port=7860)"]