raefik détecte automatiquement vos conteneurs via les labels Docker. Ces labels permettent de :
- Indiquer à Traefik qu’un conteneur doit être exposé sur le web.
- Définir des règles de routage (nom de domaine, entrypoint, etc.)
Pour cette étape, nous reprenons le stack Apache / PHP-FPM / MariaDB que nous avons déjà déployé.
Le réseau externe
Dans notre configuration, Traefik est déployé dans une stack séparée. Pour que vos conteneurs d’application soient visibles par Traefik :
- On crée un réseau Docker externe
proxy-traefik(déjà fait à la section précédente). - Chaque stack d’application doit joindre ce réseau externe.
Exemple pour notre stack PHP/Apache :
networks:
proxy-traefik:
external: trueCela permet à Traefik de communiquer avec les conteneurs sans que leurs ports internes soient exposés directement à Internet.Exemple de labels pour un conteneur web
Dans le service Apache ou PHP-FPM :
services:
web:
image: php:8.2-apache
container_name: monsite-web
restart: unless-stopped
networks:
- proxy-traefik
labels:
- "traefik.enable=true" # On active Traefik sur ce conteneur
- "traefik.http.routers.monsite.rule=Host(`monsite.local`)" # Domaine à router
- "traefik.http.routers.monsite.entrypoints=web" # Entrypoint défini dans Traefik
Ici, Traefik détecte automatiquement le conteneur et sait qu’il doit router le trafic vers
monsite.local.
Les labels sont des métadonnées simples qui servent à “taguer” le conteneur pour Traefik.
Schéma simplifié des flux
Internet
|
Traefik (stack séparé)
|
|-- proxy-traefik (réseau externe)
|
-------------------------------
| | |
Apache PHP-FPM MariaDB
(web) (backend) (bdd)
- Les conteneurs web et backend sont connectés au réseau externe
proxy-traefik.- Traefik peut ainsi router le trafic vers le bon conteneur grâce aux labels.
- Les conteneurs n’exposent pas leurs ports directement sur Internet, ce qui sécurise le stack.
💡 Astuce :
- Les labels ne modifient pas le conteneur, ils servent uniquement à informer Traefik.
- Vous pouvez ajouter autant de labels que nécessaire pour définir des règles plus complexes (HTTPS, redirections, middlewares, etc.)