# syntax=docker/dockerfile:1.4
# Fast app image — gems come from deps base (custom/dalan-deps:1).
# Rebuild deps when Gemfile.lock changes:  docker build -f Dockerfile.deps -t custom/dalan-deps:1 .
ARG DEPS_IMAGE=custom/dalan-deps:1
FROM ${DEPS_IMAGE}

ARG MAXMINDDB_LINK
ARG MAXMINDDB_LICENSE_KEY=T6ElPBlyOOuCyjzw
ENV MAXMINDDB_LINK=${MAXMINDDB_LINK:-https://download.maxmind.com/app/geoip_download?edition_id=GeoLite2-Country&suffix=tar.gz&license_key=${MAXMINDDB_LICENSE_KEY}} \
    RAILS_ENV=production \
    APP_HOME=/home/app

USER app
WORKDIR $APP_HOME

COPY --chown=app:app . .

RUN mkdir -p ${APP_HOME}/geolite \
 && (wget -qO ${APP_HOME}/geolite.tar.gz "${MAXMINDDB_LINK}" \
     && tar xzf ${APP_HOME}/geolite.tar.gz -C ${APP_HOME}/geolite --strip-components 1 \
     && rm ${APP_HOME}/geolite.tar.gz \
     || echo "GeoLite download skipped — using placeholder") \
 && test -f ${APP_HOME}/geolite/GeoLite2-Country.mmdb || touch ${APP_HOME}/geolite/GeoLite2-Country.mmdb

ENV BARONG_MAXMINDDB_PATH=${APP_HOME}/geolite/GeoLite2-Country.mmdb

RUN curl -fsSL https://www.cloudflare.com/ips-v4 >> ${APP_HOME}/config/cloudflare_ips.yml \
 && echo "" >> ${APP_HOME}/config/cloudflare_ips.yml \
 && curl -fsSL https://www.cloudflare.com/ips-v6 >> ${APP_HOME}/config/cloudflare_ips.yml

RUN ruby ./bin/init_config \
 && bundle exec rake tmp:create

EXPOSE 8080
CMD ["bundle", "exec", "puma", "--config", "config/puma.rb"]
