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} 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" 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: networks: ptitspas_network: driver: bridge proxy_network: external: true