Utiliser Traefik avec Docker pour gérer facilement vos sites en local

jeudi 3 juillet 2025

Introduction

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.

Tags: Docker , https , port , traefik