Files
gestion-inscriptions-mycompet/docker-compose.yml
2026-04-08 16:25:58 +02:00

64 lines
1.6 KiB
YAML

services:
# 1. Base de données : PostgreSQL
db:
image: postgres:18-alpine
container_name: gim_db
restart: unless-stopped
ports:
- "5432:5432"
environment:
POSTGRES_USER: ${POSTGRES_USER:-gim_db_admin}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-gim_db_password}
POSTGRES_DB: ${POSTGRES_DB:-gim_db}
volumes:
# Persistance des données : crucial pour ne rien perdre au redémarrage
- db_data:/var/lib/postgresql/data
networks:
- gim_network
# 2. Back-end : API NestJS
api:
build:
context: ./packages/backend
dockerfile: Dockerfile
container_name: gim_api
restart: unless-stopped
depends_on:
- db
environment:
# Connexion à la BDD via le nom du conteneur ("db")
- DB_HOST=db
- DB_PORT=5432
- DB_USER=${POSTGRES_USER:-gim_db_admin}
- DB_PASSWORD=${POSTGRES_PASSWORD:-gim_db_password}
- DB_NAME=${POSTGRES_DB:-gim_db}
# Clé de chiffrement applicatif
- ENCRYPTION_MASTER_KEY=${ENCRYPTION_MASTER_KEY}
ports:
- "3000:3000"
networks:
- gim_network
# 3. Front-end : Vue.js servi par Nginx
web:
build:
context: ./packages/frontend
dockerfile: Dockerfile
container_name: gim_web
restart: unless-stopped
depends_on:
- api
ports:
- "80:80"
# - "443:443" # À décommenter lors de la mise en place du certificat SSL/TLS
networks:
- gim_network
# Définition du réseau virtuel privé pour isoler les conteneurs
networks:
gim_network:
driver: bridge
# Définition du volume physique sur le serveur pour la base de données
volumes:
db_data: