Docker deployment - ETML-ES-LABEFE-MANUEL-THEO/BACKEND GitHub Wiki
Déploiement de l’application Z-Auction avec Docker
Ce guide explique comment déployer l’application backend Z-Auction à l’aide de Docker et Docker Compose, avec ou sans reverse proxy Nginx et base de données MySQL.
Prérequis
- Docker installé
- Docker Compose installé
- Accès au code source de l’application
1. Structure des fichiers
.
├── compose.yaml
├── compose-mysql-nginx.yaml
├── deploy/
│ └── Dockerfile
├── nginx-reverse-proxy.conf
├── pom.xml
└── src/
2. Construction et lancement de l’application seule
Pour lancer uniquement l’application Spring Boot (sans MySQL ni Nginx) :
docker compose -f compose.yaml up --build
- Le service sera accessible sur http://localhost:8080/
- Le build se fait via le Dockerfile dans
deploy/Dockerfile
3. Déploiement avec MySQL et Nginx (reverse proxy)
Pour un environnement complet avec MySQL et reverse proxy Nginx :
docker compose -f compose-mysql-nginx.yaml up --build
Services lancés
- reverse-proxy : Nginx, accessible sur les ports 80 (HTTP) et 443 (HTTPS si configuré)
- spring-boot : Application backend, profil
mysql,security
, connectée à MySQL - mysql : Base de données MySQL, initialisée avec les variables d’environnement
Points d’accès
- API via Nginx reverse proxy : http://localhost/api/
- MySQL n’est pas exposé publiquement (accessible seulement par le backend)
4. Configuration du reverse proxy Nginx
Le fichier nginx-reverse-proxy.conf
contient la configuration suivante :
server {
listen 80;
location /api/ {
proxy_pass http://spring-boot:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Attention :
Corrige la cible de proxy_pass
si besoin (spring-boot
au lieu de sping-boot
).
5. Variables d’environnement importantes
Pour le service Spring Boot :
SPRING_PROFILES_ACTIVE=mysql,security
SPRING.DATASOURCE.URL=jdbc:mysql://mysql:3306/zauction
SPRING.DATASOURCE.USERNAME=zauction
SPRING.DATASOURCE.PASSWORD=secret
Pour le service MySQL :
MYSQL_DATABASE=zauction
MYSQL_USER=zauction
MYSQL_PASSWORD=secret
MYSQL_ROOT_PASSWORD=verysecret
6. Arrêter et nettoyer les services
Pour arrêter les services :
docker compose -f compose-mysql-nginx.yaml down
Pour supprimer les volumes (données MySQL) :
docker compose -f compose-mysql-nginx.yaml down -v
7. Conseils et bonnes pratiques
- Ne jamais committer de mots de passe ou secrets en clair dans le dépôt.
- Adapter les variables d’environnement pour la production (mots de passe, ports, etc.).
- Pour HTTPS, adapter la configuration Nginx.
8. Dépannage
- Vérifier les logs :
docker compose -f compose-mysql-nginx.yaml logs
- Si un service ne démarre pas, vérifier les variables d’environnement et la configuration réseau.
- Pour reconstruire complètement les images :
docker compose -f compose-mysql-nginx.yaml build --no-cache