petitspas/docker-compose.yml
Julien Martin fdd1e06e77 [#101] [Frontend] Inscription parent — API, soumission et validation
Squash merge de develop vers master.

Livrables principaux (ticket #101 et mise au point associée) :
- Branchement du formulaire d'inscription parent sur POST /api/v1/auth/register/parent
- Payload DTO (parents, enfants, photos base64, CGU) et services Auth
- Parcours gestionnaire : cartes dossiers, wizard validation famille, images authentifiées
- Scripts d'inscription test (Martin, Durand/Rousseau, Lecomte) ; .gitignore .cursor/

Inclut également les ajustements develop fusionnés dans ce lot (inscription AM, champs relais, etc.).

Closes #101

Made-with: Cursor
2026-04-11 18:07:24 +02:00

114 lines
3.9 KiB
YAML

services:
# Base de données PostgreSQL
database:
image: postgres:17
container_name: ptitspas-postgres
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- ./database/BDD.sql:/docker-entrypoint-initdb.d/01_init.sql
- postgres_data:/var/lib/postgresql/data
networks:
- ptitspas_network
# Interface d'administration DB
pgadmin:
image: dpage/pgadmin4
container_name: ptitspas-pgadmin
restart: unless-stopped
environment:
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL}
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD}
SCRIPT_NAME: /pgadmin
depends_on:
- database
labels:
- "traefik.enable=true"
- "traefik.http.routers.ptitspas-pgadmin.rule=Host(\"app.ptits-pas.fr\") && PathPrefix(\"/pgadmin\")"
- "traefik.http.routers.ptitspas-pgadmin.entrypoints=websecure"
- "traefik.http.routers.ptitspas-pgadmin.tls.certresolver=leresolver"
- "traefik.http.routers.ptitspas-pgadmin.priority=30"
- "traefik.http.services.ptitspas-pgadmin.loadbalancer.server.port=80"
networks:
- ptitspas_network
- proxy_network
# Backend NestJS
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: ptitspas-backend
restart: unless-stopped
environment:
POSTGRES_HOST: ${POSTGRES_HOST}
POSTGRES_PORT: ${POSTGRES_PORT}
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
API_PORT: ${API_PORT}
JWT_ACCESS_SECRET: ${JWT_ACCESS_SECRET}
JWT_ACCESS_EXPIRES: ${JWT_ACCESS_EXPIRES}
JWT_REFRESH_SECRET: ${JWT_REFRESH_SECRET}
JWT_REFRESH_EXPIRES: ${JWT_REFRESH_EXPIRES}
NODE_ENV: ${NODE_ENV}
LOG_API_REQUESTS: ${LOG_API_REQUESTS:-false}
CONFIG_ENCRYPTION_KEY: ${CONFIG_ENCRYPTION_KEY}
# Photos inscription (base64) — chemin absolu dans le conteneur (voir volume backend_uploads)
UPLOAD_PHOTOS_DIR: ${UPLOAD_PHOTOS_DIR:-/app/uploads/photos}
volumes:
- backend_uploads:/app/uploads/photos
depends_on:
- database
labels:
- "traefik.enable=true"
- "traefik.http.routers.ptitspas-api.rule=Host(\"app.ptits-pas.fr\") && PathPrefix(\"/api\")"
- "traefik.http.routers.ptitspas-api.entrypoints=websecure"
- "traefik.http.routers.ptitspas-api.tls.certresolver=leresolver"
- "traefik.http.routers.ptitspas-api.priority=20"
- "traefik.http.services.ptitspas-api.loadbalancer.server.port=3000"
# Fichiers statiques photos (URL relatives /uploads/...) — priorité > front (10)
- "traefik.http.routers.ptitspas-uploads.rule=Host(\"app.ptits-pas.fr\") && PathPrefix(\"/uploads\")"
- "traefik.http.routers.ptitspas-uploads.entrypoints=websecure"
- "traefik.http.routers.ptitspas-uploads.tls.certresolver=leresolver"
- "traefik.http.routers.ptitspas-uploads.priority=18"
- "traefik.http.routers.ptitspas-uploads.service=ptitspas-api"
networks:
- ptitspas_network
- proxy_network
# Frontend Flutter
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: ptitspas-frontend
restart: unless-stopped
environment:
API_URL: ${API_URL}
depends_on:
- backend
labels:
- "traefik.enable=true"
- "traefik.http.routers.ptitspas-front.rule=Host(\"app.ptits-pas.fr\")"
- "traefik.http.routers.ptitspas-front.entrypoints=websecure"
- "traefik.http.routers.ptitspas-front.tls.certresolver=leresolver"
- "traefik.http.routers.ptitspas-front.priority=10"
- "traefik.http.services.ptitspas-front.loadbalancer.server.port=80"
networks:
- ptitspas_network
- proxy_network
volumes:
postgres_data:
backend_uploads:
networks:
ptitspas_network:
driver: bridge
proxy_network:
external: true