Variables d'environnement avec Spring Boot et Docker - 0x485254/brief-26 GitHub Wiki
🐳 Variables d'environnement avec Spring Boot et Docker
📅 Date : 27/06/2025
Ce document explique comment les variables d’environnement sont gérées lorsqu’on utilise Spring Boot avec Docker et Docker Compose.
🧩 Sources possibles de variables
Source | Utilisé pour ? | Lu par Spring Boot ? | Lu par Docker ? |
---|---|---|---|
.env |
Interpolation dans docker-compose.yml |
❌ (non) | ✅ (oui) |
application.properties |
Configuration de base Spring | ✅ (oui) | ❌ (non) |
application-local.properties |
Config locale non committée | ✅ (si profil actif) | ❌ (non) |
environment: dans Docker |
Surcharges et secrets injectés | ✅ (oui) | ✅ (oui) |
Arguments CLI (--var=... ) |
Valeurs prioritaires | ✅ (oui) | ❌ (non) |
⚙️ Priorité de résolution des variables par Spring Boot
Spring Boot lit les variables dans cet ordre de priorité :
- Variables système / Docker
- Arguments CLI (
--DB_HOST=...
) - Fichiers
application-*.properties
- **Valeurs par défaut dans les
$Ellipsis
Exemple :
spring.datasource.url=jdbc:postgresql://${DB_HOST:localhost}:${DB_PORT:5432}/${DB_NAME:easygroup}
Si DB_HOST
est défini dans Docker : c’est cette valeur qui sera utilisée.
🐳 Comportement avec Docker Compose
environment:
- DB_HOST=db
- DB_PORT=${DB_PORT:-5432}
- DB_NAME=${DB_NAME:-easygroup}
...
Ces variables sont transmises au contenant Docker et visibles de Spring Boot comme des variables système.
.env
?
📁 Et le fichier Si tu as un .env
au même niveau que docker-compose.yml
:
- ✅ Docker Compose l'utilisera pour remplir les
$Ellipsis
dans le fichier YAML - ❌ Spring Boot ne le lit pas directement
👉 Pour que Spring Boot accède à .env
, il faut utiliser une lib tierce comme dotenv-java
.
✅ Bonnes pratiques recommandées
- Utiliser
.env
pour injecter les variables dansdocker-compose.yml
- Utiliser
application.properties
pour les valeurs partagées - Utiliser
application-local.properties
pour les valeurs locales (non committées) - Définir
SPRING_PROFILES_ACTIVE
dans Docker pour activer le bon profil - Ne jamais committer de mots de passe ou secrets
🌐 Accès Swagger
Une fois lancé avec :
./mvnw spring-boot:run
ou via conteneur Docker
Swagger est accessible à : http://localhost:8080/swagger-ui/index.html