FROM ubuntu:24.04

ARG DEBIAN_FRONTEND=noninteractive
RUN dpkg --add-architecture i386 \
    && apt-get update \
    && apt-get install -y --no-install-recommends \
       ca-certificates curl lib32gcc-s1 python3 python3-pip python3-venv \
    && rm -rf /var/lib/apt/lists/* \
    && useradd --create-home --shell /bin/bash progression \
    && mkdir -p /opt/steamcmd/steamapps /srv/progression/.data \
    && curl -fsSL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz \
       | tar -xz -C /opt/steamcmd \
    && chown -R progression:progression /opt/steamcmd /srv/progression

WORKDIR /srv/progression
COPY --chown=progression:progression requirements-web.txt ./
RUN python3 -m venv /srv/venv \
    && /srv/venv/bin/pip install --no-cache-dir -r requirements-web.txt

COPY --chown=progression:progression progression_backend ./progression_backend
COPY --chown=progression:progression art ./art
COPY --chmod=755 docker-entrypoint.sh /usr/local/bin/progression-entrypoint

ENV HOME=/root \
    PROGRESSION_HOST=0.0.0.0 \
    PROGRESSION_PORT=8000 \
    PROGRESSION_DB_PATH=.data/progression.db \
    STEAMCMD_PATH=/opt/steamcmd/steamcmd.sh \
    STEAMCMD_WORKSHOP_DIR=/opt/steamcmd/steamapps/workshop/content/294100 \
    REFRESH_INTERVAL_SECONDS=3600 \
    REFRESH_ON_STARTUP=true \
    INITIAL_DOWNLOAD_TIMEOUT_SECONDS=43200

VOLUME ["/srv/progression/.data", "/opt/steamcmd/steamapps"]
EXPOSE 8000
HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \
  CMD curl -fsS http://127.0.0.1:8000/api/health || exit 1

ENTRYPOINT ["/usr/local/bin/progression-entrypoint"]
CMD ["/srv/venv/bin/python", "-m", "progression_backend"]
