# Image d'exécution : non-root, sans outil de compilation, système de fichiers en lecture seule possible.
FROM python:3.12-slim

ENV PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1
WORKDIR /srv
COPY requirements.txt .
RUN pip install -r requirements.txt && useradd --uid 10001 --no-create-home app
COPY app/ app/
COPY web/ web/

USER 10001
EXPOSE 8000
# --timeout-graceful-shutdown : les requêtes en cours finissent après SIGTERM.
# --timeout-keep-alive 75 : plus long que le keep-alive amont de NGINX (60 s), sinon NGINX
#   réutilise une connexion que uvicorn vient de fermer et renvoie un 502.
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", \
     "--timeout-graceful-shutdown", "20", "--timeout-keep-alive", "75", "--no-access-log"]
