# Proxy de supervision MCP — image Docker
# Spécification : V2/conception/proxy_supervision_mcp.md

FROM python:3.12-slim

ENV PYTHONDONTWRITEBYTECODE=1 \
    PYTHONUNBUFFERED=1

WORKDIR /app

# curl requis pour le healthcheck Docker externe (docker-compose :
# `test: curl -fsS http://localhost:8001/healthz`). V0.4.0.
# Depuis V0.4.1, /healthz renvoie 503 tant qu'aucun outil MCP n'est monté
# (démarrage hors ligne) : le conteneur apparaît alors « unhealthy ».
RUN apt-get update \
    && apt-get install -y --no-install-recommends curl \
    && rm -rf /var/lib/apt/lists/*

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

COPY app/ /app/app/
COPY config.yaml /app/config.yaml

EXPOSE 8001

# --timeout-graceful-shutdown 10 (V0.4.1, correctif n° 2) : sur SIGTERM,
# uvicorn attendait indéfiniment la fermeture des connexions SSE
# persistantes (page /queue) — le processus ne mourait jamais et le statut
# Docker mentait pendant la fenêtre d'arrêt. Les connexions restantes sont
# désormais coupées après 10 s.
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8001", \
     "--timeout-graceful-shutdown", "10"]
