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

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