Utiliser Traefik avec Docker pour gérer facilement vos sites en local
jeudi 3 juillet 2025Introduction
Quand on développe plusieurs sites web en local avec Docker, gérer les ports, HTTPS, redirections, et virtual hosts peut vite devenir compliqué. C’est là que Traefik, un reverse proxy moderne, entre en jeu.
Traefik s’intègre facilement avec Docker, détecte automatiquement vos containers et configure le routage HTTP/HTTPS sans besoin de modifier vos containers web.
Qu’est-ce que Traefik ?
Traefik est un reverse proxy et un load balancer qui simplifie la gestion des accès à vos services Docker (ou autres).
- Il détecte automatiquement les containers Docker grâce à leurs labels
- Il gère la terminaison SSL (via Let’s Encrypt ou certificats locaux)
- Il route les requêtes HTTP/HTTPS vers le bon container selon le nom de domaine
- Il peut rediriger automatiquement HTTP vers HTTPS
- Il évite d’avoir à ouvrir des ports différents à chaque fois (plus besoin de localhost:8085, vous utilisez vos vrais noms de domaines en .test, par exemple)
Organisation du projet
Imaginons que votre dossier local ressemble à ça :
~/Sites/ ├── traefik/ # Contient le container Traefik + config ├── website/ # Contient votre site web PHP + Apache dockerisé
Étape 1 — Installer Traefik dans son dossier dédié
Dans ~/Sites/traefik/, créez ces fichiers :
docker-compose.yaml
version: "3.8" services: traefik: image: traefik:v3.0 container_name: traefik restart: unless-stopped command: - --log.level=INFO - --entrypoints.web.address=:80 - --entrypoints.websecure.address=:443 - --providers.docker=true - --providers.docker.exposedbydefault=false - --certificatesresolvers.default.acme.tlschallenge=true - --certificatesresolvers.default.acme.email=ton.email@example.com - --certificatesresolvers.default.acme.storage=/letsencrypt/acme.json ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./letsencrypt:/letsencrypt networks: - webproxy networks: webproxy: driver: bridge
Note :
- On expose les ports 80 et 443 pour gérer HTTP/HTTPS.
- Traefik écoute le Docker socket pour détecter automatiquement les containers.
- Let’s Encrypt est configuré pour générer les certificats TLS automatiquement (via TLS-ALPN challenge).
- Le stockage ACME est persistant dans letsencrypt/acme.json.
Étape 2 — Configurer votre site web Dockerisé dans ~/Sites/website/docker/
Dans ~/Sites/website/docker/docker-compose.yaml :version: "3.8" services: php: build: ./php image: monsite_php:8.3 container_name: monsite_php volumes: - ../../arkaos25.com:/var/www/html - ./apache/vhost.conf:/etc/apache2/sites-enabled/000-default.conf labels: - "traefik.enable=true" - "traefik.http.routers.monsite.rule=Host(`arkaos25.test`)" - "traefik.http.routers.monsite.entrypoints=websecure" - "traefik.http.routers.monsite.tls=true" - "traefik.http.routers.monsite.tls.certresolver=default" - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" - "traefik.http.routers.monsite.middlewares=redirect-to-https" expose: - "80" networks: - webproxy networks: webproxy: external: true
Étape 3 — Créer le réseau Docker partagé
Traefik et votre site doivent être sur le même réseau Docker pour communiquer :
docker network create webproxy
Étape 4 — Lancer Traefik
Dans ~/Sites/traefik/ :docker-compose up -d
Étape 5 — Lancer votre site
Dans ~/Sites/website/ :
docker-compose up -d
Résultat
- Vous pouvez accéder à votre site local avec https://arkaos25.test sans préciser de port
- Traefik s’occupe de la gestion HTTPS et des certificats (via Let’s Encrypt ou vos certificats locaux si configurés)
- Vous n’avez plus à gérer les ports manuellement ni les redirections HTTP/HTTPS dans votre container
Bonus : redirection HTTP vers HTTPS
Dans les labels de votre service (voir plus haut), on utilise la middleware Traefik :
– « traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https » – « traefik.http.routers.monsite.middlewares=redirect-to-https »Cela force la redirection de toute requête HTTP vers HTTPS automatiquement.
Conclusion
Traefik est un outil puissant qui facilite grandement la gestion des sites web en local et en production avec Docker. Sa configuration simple via des labels Docker vous évite de toucher aux fichiers de configuration complexes d’Apache/Nginx, et vous permet de travailler avec vos vrais noms de domaines locaux et HTTPS sans effort.