FROM rocker/shiny:latest ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y --no-install-recommends \ build-essential \ pkg-config \ ca-certificates \ git \ wget \ libssl-dev \ libxml2-dev \ libcurl4-openssl-dev \ libgit2-dev \ libfontconfig1-dev \ libfreetype6-dev \ libpng-dev \ libharfbuzz-dev \ libfribidi-dev \ libicu-dev \ libudunits2-dev \ libproj-dev \ proj-bin \ libgdal-dev \ libgeos-dev \ && rm -rf /var/lib/apt/lists/* # Install remotes then lapop (no vignettes) RUN R -e "install.packages('remotes', repos='https://cloud.r-project.org')" RUN R -e "remotes::install_github('lapop-central/lapop', dependencies=TRUE, force=TRUE, build_vignettes=FALSE, upgrade='never', args='--no-multiarch --no-test-load')" # --- Install ALL CRAN packages your app uses --- RUN R -e "install.packages(c( \ 'shiny', \ 'shinyWidgets', \ 'haven', \ 'dplyr', \ 'tidyr', \ 'stringr', \ 'Hmisc' \ ), repos='https://cloud.r-project.org')" COPY . /srv/shiny-server/ WORKDIR /srv/shiny-server/ EXPOSE 7860 CMD ["R", "-e", "shiny::runApp(host='0.0.0.0', port=7860)"]