# python:3.12-alpine, épinglé par digest pour la reproductibilité des builds
# (cf. docs/adr/0007-image-base-python-api-alpine.md). Pas de build-deps
# (gcc/libpq-dev) : asyncpg/uvloop/httptools publient des wheels musllinux
# prêts à l'emploi, aucune compilation native requise.
FROM python:3.12-alpine@sha256:d09d15e60962ca365d1cd544a48773bac9d33f2fb1b00f2aa0deec78ade7dc31

WORKDIR /app

# COPY . . précède le pip install : `-e .` construit un editable install qui
# a besoin du paquet `app/` présent sur disque au moment de l'install (sans
# quoi hatchling ne l'enregistre nulle part et `import app` échoue partout
# hors du répertoire de travail — y compris pour `pytest` exécuté seul dans
# l'image). Coût assumé : le layer pip install n'est plus mis en cache
# indépendamment du code source.
COPY . .
RUN pip install --no-cache-dir -e ".[dev]"

EXPOSE 8000

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
