FROM rocker/shiny:4.5.2 AS base

WORKDIR /app
RUN mkdir -p renv
COPY renv.lock renv.lock
COPY .Rprofile .Rprofile
COPY renv/activate.R renv/activate.R
COPY renv/settings.json renv/settings.json

RUN mkdir renv/.cache
ENV RENV_PATHS_CACHE=renv/.cache

RUN apt-get update && apt-get install -y \
      build-essential \
      cmake \
      libcurl4-openssl-dev \
      libssl-dev \
      libxml2-dev \
      libgdal-dev \
      gdal-bin \
      libgeos-dev \
      libproj-dev \
      libudunits2-dev \
      libpq-dev \
      libfontconfig1-dev \
      libfreetype6-dev \
      libharfbuzz-dev \
      libfribidi-dev \
      libabsl-dev \
      libpng-dev \
      libjpeg-dev \
      libtiff-dev \
      git \
      pandoc \
      && rm -rf /var/lib/apt/lists/*

RUN R -s -e "renv::restore()"

FROM rocker/shiny:4.5.2

WORKDIR /app

COPY --from=base /app/renv /app/renv
COPY --from=base /app/.Rprofile /app/.Rprofile
COPY --from=base /app/renv.lock /app/renv.lock

COPY dashboard.Rmd dashboard.Rmd
COPY queries.R queries.R
COPY utils.R utils.R

EXPOSE 8080

CMD ["R", "-e", "rmarkdown::run('dashboard.Rmd', shiny_args = list(host = '0.0.0.0', port = 8080))"]
