✨ feat(security): Ajoute l'authentification Keycloak SSO et migre les commandes
Supprime la commande AccountCommand, la migration et ajoute l'authentification
Keycloak SSO. Crée les vues de base pour le tableau de bord.
```
129 lines
3.9 KiB
YAML
129 lines
3.9 KiB
YAML
services:
|
|
|
|
# --- Service PHP ---
|
|
# Conteneur pour exécuter l'application Symfony (requêtes web)
|
|
php:
|
|
build:
|
|
context: .
|
|
dockerfile: ./docker/php/Dockerfile
|
|
args:
|
|
# Utilise l'UID/GID de l'hôte pour éviter les problèmes de permissions
|
|
UID: ${UID:-1000}
|
|
GID: ${GID:-1000}
|
|
container_name: crm_php
|
|
environment:
|
|
- XDEBUG_MODE=coverage
|
|
volumes:
|
|
# Monte le code source de l'application dans le conteneur
|
|
- ./:/srv/app
|
|
# Monte le socket Docker pour permettre l'exécution de commandes docker depuis le conteneur
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
- ./coverage:/opt/phpstorm-coverage
|
|
- ./.coverage:/opt/phpstorm-coverage
|
|
depends_on:
|
|
# S'assure que la base de données et Redis sont démarrés avant PHP
|
|
- db
|
|
- redis
|
|
networks:
|
|
- crm_network # Assignation au réseau commun
|
|
|
|
# --- Service Worker pour Symfony Messenger ---
|
|
# Conteneur dédié à l'exécution des messages en arrière-plan
|
|
messenger-worker:
|
|
build:
|
|
context: .
|
|
dockerfile: ./docker/php/Dockerfile
|
|
args:
|
|
UID: ${UID:-1000}
|
|
GID: ${GID:-1000}
|
|
container_name: crm_messenger_worker
|
|
# Commande pour lancer le worker. 'async' est le nom du transport par défaut.
|
|
command: php bin/console messenger:consume async --memory-limit=128M --time-limit=3600
|
|
volumes:
|
|
- ./:/srv/app
|
|
# Monte aussi le socket Docker ici pour la cohérence
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
networks:
|
|
- crm_network # Assignation au réseau commun
|
|
|
|
# --- Service Frontend (Bun + Vite) ---
|
|
# Conteneur pour compiler les assets JS/CSS en développement
|
|
bun:
|
|
image: oven/bun:1-slim
|
|
container_name: crm_bun
|
|
# Exécute les commandes avec l'utilisateur de l'hôte pour éviter les problèmes de permissions sur node_modules
|
|
user: "${UID:-1000}:${GID:-1000}"
|
|
working_dir: /usr/src/app
|
|
volumes:
|
|
- ./:/usr/src/app
|
|
ports:
|
|
# Port par défaut du serveur de développement Vite
|
|
- "5173:5173"
|
|
# Lance le serveur de développement Vite défini dans package.json
|
|
command: bun run dev
|
|
networks:
|
|
- crm_network # Assignation au réseau commun
|
|
|
|
# --- Service Serveur Web (Caddy) ---
|
|
# Serveur web moderne qui sert l'application et gère le PHP-FPM
|
|
caddy:
|
|
image: caddy:2-alpine
|
|
container_name: crm_caddy
|
|
ports:
|
|
# Mappe le port 8000 de l'hôte au port 80 du conteneur
|
|
- "8000:80"
|
|
volumes:
|
|
# Monte le fichier de configuration de Caddy
|
|
- ./docker/caddy/Caddyfile:/etc/caddy/Caddyfile
|
|
# Monte le code source pour servir les fichiers statiques
|
|
- ./:/srv/app
|
|
depends_on:
|
|
- php
|
|
networks:
|
|
- crm_network # Assignation au réseau commun
|
|
|
|
# --- Service Base de Données principale (PostgreSQL) ---
|
|
db:
|
|
image: postgres:16-alpine
|
|
container_name: crm_db
|
|
ports:
|
|
- "5432:5432"
|
|
environment:
|
|
POSTGRES_DB: app_db
|
|
POSTGRES_USER: symfony_user
|
|
POSTGRES_PASSWORD: ChangeMeInProd!
|
|
volumes:
|
|
# Volume nommé pour la persistance des données
|
|
- db_data:/var/lib/postgresql/data
|
|
networks:
|
|
- crm_network # Assignation au réseau commun
|
|
|
|
# --- Service Cache/Messenger (Redis) ---
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: crm_redis
|
|
networks:
|
|
- crm_network # Assignation au réseau commun
|
|
|
|
# --- Service de Test d'Emails (MailHog) ---
|
|
# Intercepte tous les emails envoyés en développement
|
|
mailhog:
|
|
image: axllent/mailpit:latest
|
|
ports:
|
|
- "1025:1025"
|
|
- "8025:8025"
|
|
networks:
|
|
- crm_network # Assignation au réseau commun
|
|
|
|
# Définition des volumes pour la persistance des données
|
|
volumes:
|
|
db_data: # Pour la base de données principale de Symfony
|
|
|
|
# Définition des réseaux
|
|
networks:
|
|
crm_network: # Définition du réseau commun
|
|
driver: bridge # Le type de driver le plus courant
|