Fichier de configuration de Traefik

Fichier docker-compose.yml

# docker-compose.yml
version: "3.3"

networks:
  web:
    external: "true"

services:
  traefik:
    image: "traefik:v2.0"
    restart: "unless-stopped"
    container_name: "traefik"
    networks:
      - web
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "./data:/etc/traefik/"
      - "/var/run/docker.sock:/var/run/docker.sock"

Fichier data/traefik.yml

# data/traefik.yml
entryPoints:
  web:
    address: ":80"
  web-secure:
    address: ":443"

certificatesResolvers:
  letsencrypt:
    acme:
      email: "<email de contact>"
      storage: "/etc/traefik/acme.json"
      httpChallenge:
        entryPoint: web

providers:
  file:
    filename: "/etc/traefik/middlewares.yml"
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false
    network: web

Fichier data/middlewares.yml

# data/middlewares.yml
http:
  middlewares:
    redirect:
      redirectScheme:
        scheme: https
    admin-auth:
      basicAuth:
        users:
         - "admin:$apr1$a1GBk512$7iY9nX7AAN7eC0PSkDV1D0"
         - "user:$apr1$pIEqNGcM$gxsdyrR0EiDvqeHj72d.g1"

Fichier docker-compose.yml pour un service whoami d'exemple

# whoami/docker-compose.yml
version: 3

networks:
  web:
    external: "true"

services:
  whoami:
    image: "containous/whoami"
    container_name: "whoami"
    networks:
      - web
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.web-whoami.rule=Host(`whoami.bobbyblues.com`)"
      - "traefik.http.routers.web-whoami.entrypoints=web"
      - "traefik.http.routers.web-whoami.middlewares=redirect@file"
      - "traefik.http.routers.web-secure-whoami.rule=Host(`whoami.bobbyblues.com`)"
      - "traefik.http.routers.web-secure-whoami.entrypoints=web-secure"
      - "traefik.http.routers.web-secure-whoami.tls=true"
      - "traefik.http.routers.web-secure-whoami.middlewares=admin-auth@file"