TP N°3 : Rendre la stack accessible sur http://mon-projet.local via Traefik

📚Docker pour les débutants : Le Chantier Naval
🔧 Travaux pratiques⏱ 15 min✅ Gratuit

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 ./app et ./conf/apache ré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