Dockerfile multi-stage (build dart:stable → runtime debian:bookworm-slim, dart compile exe AOT pour server et migrate), docker-compose.yaml (services api+postgres:16-alpine, healthcheck Postgres, depends_on: service_healthy, migrations auto au démarrage via docker-entrypoint.sh+MIGRATE_ON_STARTUP), .env.example documenté, scripts/push-gitea-image.sh sans aucun identifiant en dur (variables GITEA_REGISTRY/OWNER/IMAGE_NAME/USERNAME/TOKEN, login via --password-stdin). docker compose config validé (syntaxe/interpolation correctes), Dockerfile et scripts relus manuellement. Non vérifié : aucun docker build/docker compose up réel (pas d'accès Docker daemon dans le sandbox Main). À faire avant mise en prod : build réel de l'image, docker compose up -d complet avec vraie connexion Postgres, puis test du script de push une fois l'adresse Gitea fournie par l'utilisateur.