Objectif
Connecter notre stack Apache / PHP-FPM / MariaDB à Traefik pour l’exposer sur Internet via un nom de domaine local (mon-projet.local).
Réutiliser les volumes et la structure Docker Compose créés dans la Section 5.
Garder les conteneurs isolés et sécurisés via le réseau externe proxy-traefik.
Étape 1 : Préparer le réseau externe
Si ce n’est pas déjà fait, créer le réseau partagé avec Traefik :
docker network create proxy-traefik
Ensuite, dans votre stack existante (Section 5), ajoutez ce réseau :
networks:
proxy-traefik:
external: true
Et assurez-vous que chaque service web/Apache rejoint ce réseau :
services:
web:
networks:
- proxy-traefik
Étape 2 : Ajouter les labels Traefik
Dans le service Apache, ajouter les labels pour que Traefik découvre le conteneur :
services:
apache:
image: httpd:2.4
container_name: monprojet-apache
ports:
- "8080:80"
volumes:
- ./app:/var/www/html
- ./conf/apache/vhost.conf:/usr/local/apache2/conf/httpd.conf
depends_on:
- php-fpm
labels:
- "traefik.enable=true"
- "traefik.http.routers.monprojet.rule=Host(`mon-projet.local`)"
- "traefik.http.routers.monprojet.entrypoints=web"
✅ Notes :
traefik.enable=true: indique que Traefik doit gérer ce conteneur.traefik.http.routers.monprojet.rule: domaine sur lequel le site sera accessible.traefik.http.routers.monprojet.entrypoints: on utilise ici le port 80 défini dans Traefik.- Les volumes
./appet./conf/apacheréutilisent votre stockage Compose de la Section 5, aucun changement à ce niveau.
Étape 3 : Vérifier la configuration locale
Pour que mon-projet.local pointe vers votre serveur local, ajoutez une entrée dans /etc/hosts (Linux/Mac) ou C:\Windows\System32\drivers\etc\hosts (Windows) :
127.0.0.1 mon-projet.local
Étape 4 : Lancer ou relancer les conteneurs
Dans le dossier de votre stack existante :
docker-compose up -d
- Traefik va détecter automatiquement le conteneur
monsite-web. - Votre site sera accessible à l’URL : http://mon-projet.local
- Le dashboard Traefik reste accessible sur http://localhost:8080 pour vérifier le routage.
Étape 5 : Vérifier la persistance des données
Puisque nous réutilisons les volumes Docker de la Section 5 :
- Les données MariaDB sont déjà dans le volume nommé (
./data) - Le code source et la configuration Apache sont dans les bind mounts (
./app,./conf) - Aucun risque de perte de données, même si le conteneur est redémarré.
Schéma simplifié du flux :
Internet / mon-projet.local
|
Traefik
|
proxy-traefik (réseau externe)
|
---------------------------
| | |
Apache PHP-FPM MariaDB
(web) (backend) (bdd)
- Traefik reçoit les requêtes HTTP pour
mon-projet.local- Route vers Apache selon les labels
- MariaDB reste en backend uniquement pour la base de données, sans exposition directe