FROM python:3.10-slim-bookworm

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1 \
    OPENBLAS_NUM_THREADS=1 \
    OMP_NUM_THREADS=1 \
    MKL_NUM_THREADS=1 \
    MALLOC_ARENA_MAX=2

WORKDIR /app
COPY local_app/deploy/requirements.txt /app/requirements.txt
RUN pip install --no-cache-dir -r /app/requirements.txt \
    && useradd --uid 10001 --create-home appuser

COPY openage /app/openage
COPY local_app /app/local_app
COPY LICENSE README.md /app/
USER 10001:10001

EXPOSE 8766
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 \
    CMD python -c "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8766/healthz', timeout=3).read()"

CMD ["gunicorn", "--no-control-socket", "--bind", "0.0.0.0:8766", "--workers", "1", "--worker-class", "gthread", "--threads", "4", "--timeout", "90", "--access-logfile", "-", "--access-logformat", "%(m)s %(U)s %(s)s", "--error-logfile", "-", "local_app.production:app"]
