name: benevoles # Déployé sur le VPS. Les variables sont lues depuis un fichier .env situé à # côté de ce fichier (non versionné) : POSTGRES_USER, POSTGRES_PASSWORD, # POSTGRES_DB, JWT_SECRET, PUBLIC_BASE_URL, HCAPTCHA_SECRET_KEY et les # variables SMTP_* / EMAIL_ENABLED. BACKEND_IMAGE / FRONTEND_IMAGE sont # exportées par le pipeline de déploiement (.gitea/workflows/ci-cd.yml) — # VITE_HCAPTCHA_SITE_KEY, elle, est figée au build de l'image frontend (voir # ci-cd.yml et deploy/README.md), pas modifiable ici. # # Les deux services ne publient que sur `127.0.0.1` : c'est le Caddy du VPS # (hors de ce compose, voir deploy/README.md) qui reçoit le trafic public et # reverse-proxy vers ces ports. services: db: image: postgres:16-alpine environment: POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_DB: ${POSTGRES_DB} volumes: - db_data:/var/lib/postgresql/data restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"] interval: 10s timeout: 5s retries: 10 backend: image: ${BACKEND_IMAGE:-gitea.mon-domaine.fr/OWNER/REPO/backend:latest} environment: DATABASE_URL: postgresql+psycopg://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB} ENVIRONMENT: production JWT_SECRET: ${JWT_SECRET} PUBLIC_BASE_URL: ${PUBLIC_BASE_URL} EMAIL_ENABLED: ${EMAIL_ENABLED:-false} SMTP_HOST: ${SMTP_HOST:-} SMTP_PORT: ${SMTP_PORT:-587} SMTP_USER: ${SMTP_USER:-} SMTP_PASSWORD: ${SMTP_PASSWORD:-} SMTP_STARTTLS: ${SMTP_STARTTLS:-true} SMTP_SSL: ${SMTP_SSL:-false} SMTP_FROM: ${SMTP_FROM:-} HCAPTCHA_SECRET_KEY: ${HCAPTCHA_SECRET_KEY:-} TZ: Europe/Paris depends_on: db: condition: service_healthy ports: - "127.0.0.1:8000:8000" restart: unless-stopped frontend: image: ${FRONTEND_IMAGE:-gitea.mon-domaine.fr/OWNER/REPO/frontend:latest} depends_on: - backend ports: - "127.0.0.1:8080:80" restart: unless-stopped volumes: db_data: