FROM python:3.14-slim

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    PYTHONPATH=/app/src \
    CRACKVISION_DEVICE=cpu \
    CRACKVISION_MODEL_ROOT=/app/models \
    PORT=8080

RUN apt-get update \
    && apt-get install -y --no-install-recommends libgl1 libglib2.0-0 \
    && rm -rf /var/lib/apt/lists/* \
    && useradd --create-home --uid 1000 appuser

WORKDIR /app

COPY requirements-deploy.txt /tmp/requirements-deploy.txt
RUN python -m pip install --no-cache-dir --upgrade pip \
    && python -m pip install --no-cache-dir \
       torch==2.15.0 torchvision==0.29.2 \
       --index-url https://download.pytorch.org/whl/cpu \
    && python -m pip install --no-cache-dir -r /tmp/requirements-deploy.txt

COPY --chown=appuser:appuser src /app/src
COPY --chown=appuser:appuser models /app/models
COPY --chown=appuser:appuser Dockerfile requirements-deploy.txt README.md /app/source-offer/
COPY --chown=appuser:appuser src /app/source-offer/src

USER appuser
EXPOSE 8080

CMD ["sh", "-c", "exec gunicorn --workers 1 --threads 1 --timeout 120 --bind 0.0.0.0:${PORT:-8080} crackvision.wsgi:app"]
