@@ -47,6 +47,68 @@ docker-compose up -d
4747
4848---
4949
50+ ## 🐳 Docker
51+
52+ ### Architecture
53+
54+ L'application peut être entièrement conteneurisée via un ** Dockerfile multi-stage** et ** Docker Compose** .
55+
56+ ```
57+ ┌─────────────────── xpeho_network (bridge) ───────────────────┐
58+ │ │
59+ │ ┌──────────┐ jdbc:postgresql:// ┌──────────┐ │
60+ │ │ app │ ──────── postgres:5432 ────────▶ │ postgres │ │
61+ │ │ :8080 │ (nom du service) │ :5432 │ │
62+ │ └──────────┘ └──────────┘ │
63+ │ │
64+ └───────────────────────────────────────────────────────────────┘
65+ ```
66+
67+ | Service | Image / Build | Rôle | Port exposé |
68+ | ------------| ------------------------------| ----------------------------| ---------------------------|
69+ | ` postgres ` | ` postgres:17-alpine ` | Base de données PostgreSQL | ` ${POSTGRES_PORT} ` → 5432 |
70+ | ` app ` | Build depuis ` Dockerfile ` | Application Spring Boot | 8080 → 8080 |
71+
72+ ### Dockerfile — Build multi-stage
73+
74+ Le Dockerfile utilise deux étapes pour produire une image finale légère et sécurisée :
75+
76+ | Stage | Image | Rôle |
77+ | -------| -------| ------|
78+ | ** Build** | ` eclipse-temurin:25-jdk ` | Compile le JAR avec Maven (JDK complet) |
79+ | ** Run** | ` eclipse-temurin:25-jre ` | Exécute l'application (JRE allégé, utilisateur non-root) |
80+
81+ > ** Pourquoi Eclipse Temurin ?** Distribution OpenJDK de référence : gratuite, open-source, maintenue par la fondation Eclipse (Adoptium).
82+
83+ > ** Sécurité :** L'image finale tourne avec un utilisateur non-root (` appuser ` ), sans code source ni outils de build.
84+
85+ ### Compose Profiles
86+
87+ Le service ` app ` est derrière un ** profil Compose** pour ne pas interférer avec le workflow dev/CI :
88+
89+ ``` bash
90+ # Démarrer uniquement PostgreSQL (dev, tests, CI)
91+ docker compose up -d
92+
93+ # Démarrer PostgreSQL + Application (déploiement complet)
94+ docker compose --profile app up -d --build
95+ ```
96+
97+ ### Commandes utiles
98+
99+ ``` bash
100+ # Voir les logs de l'application
101+ docker compose logs -f app
102+
103+ # Arrêter et supprimer les conteneurs
104+ docker compose down
105+
106+ # Arrêter et supprimer les conteneurs + volumes (reset DB)
107+ docker compose down -v
108+ ```
109+
110+ ---
111+
50112## ⚙️ Configuration
51113
52114### Environment Variables (.env)
@@ -56,6 +118,11 @@ POSTGRES_USER=your_user
56118POSTGRES_PASSWORD=your_password
57119POSTGRES_DB=your_database
58120POSTGRES_PORT=5432
121+
122+ # Liquibase (optionnel, valeurs par défaut fournies)
123+ LB_CHANGELOG=db/changelog/db.changelog-master.yaml
124+ LB_SCHEMA=public
125+ SPRING_LIQUIBASE_ENABLED=true
59126```
60127
61128### External API Configuration
0 commit comments