FROM rocker/shiny:4.5.2 AS renv-base

WORKDIR /app

RUN apt-get update && apt-get install -y \
      build-essential \
      cmake \
      libcurl4-openssl-dev \
      libssl-dev \
      libxml2-dev \
      libgdal-dev \
      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 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 -p renv/.cache
ENV RENV_PATHS_CACHE=renv/.cache

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

FROM rocker/shiny:4.5.2

WORKDIR /app

RUN apt-get update && apt-get install -y \
      libcurl4 \
      libssl3 \
      libxml2 \
      gdal-bin \
      libgeos-c1v5 \
      libproj25 \
      libudunits2-0 \
      libpq5 \
      libfontconfig1 \
      libfreetype6 \
      libharfbuzz0b \
      libfribidi0 \
      libpng16-16 \
      libtiff6 \
      pandoc \
      && rm -rf /var/lib/apt/lists/*

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

COPY dashboard.Rmd dashboard.Rmd
COPY queries.R queries.R
COPY utils.R utils.R
COPY config.yml config.yml

EXPOSE 8080

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