# syntax=docker/dockerfile:1
#
# Build context: production_test/  (docker build . from inside production_test/)
# Installs switchly 0.3.0 directly from PyPI — no local source needed.
#
# ---------------------------------------------------------------------------
# Stage 1 — build
# ---------------------------------------------------------------------------
FROM python:3.13-slim AS build

WORKDIR /app

RUN pip install --no-cache-dir --upgrade pip

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

# ---------------------------------------------------------------------------
# Stage 2 — runtime
# ---------------------------------------------------------------------------
FROM python:3.13-slim AS runtime

WORKDIR /app

RUN addgroup --system app && adduser --system --ingroup app app

COPY --from=build /usr/local/lib/python3.13 /usr/local/lib/python3.13
COPY --from=build /usr/local/bin/gunicorn   /usr/local/bin/gunicorn
COPY --from=build /usr/local/bin/uvicorn    /usr/local/bin/uvicorn

# Only the app code — switchly comes from PyPI, not local source
COPY main.py config.py gunicorn.conf.py ./

ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1

USER app

EXPOSE 8000

HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
    CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"

CMD ["gunicorn", "-c", "gunicorn.conf.py", "main:app"]
