services: traefik: image: traefik:latest container_name: traefik command: - "--providers.docker=true" security_opt: - no-new-privileges:true ports: - "80:80" - "443:443" environment: - CF_DNS_API_TOKEN=${CF_DNS_API_TOKEN} volumes: - /var/run/docker.sock:/var/run/docker.sock - ./traefik.yaml:/etc/traefik/traefik.yaml:ro - /srv/docker/traefik:/var/traefik/certs/:rw - traefik-logs:/var/log/traefik labels: - "traefik.enable=true" - "traefik.docker.network=traefik" - "traefik.http.routers.external.rule=Host(`external.yourdomain.com`)" - "traefik.http.routers.external.entrypoints=websecure" - "traefik.http.routers.external.tls=true" - "traefik.http.routers.external.middlewares=bouncer@swarm,realip@swarm" - "traefik.http.services.external.loadbalancer.server.port=80" - "traefik.constraint=proxy-public" command: - --providers.docker=true - --accesslog - --accesslog.filepath=/var/log/traefik/access.log - --entrypoints.web.address=:80 - --entrypoints.websecure.address=:443 - --certificatesresolvers.prodresolver.acme.email=youremail@domain.fr - --certificatesresolvers.prodresolver.acme.caserver=https://acme-v02.api.letsencrypt.org/directory - --certificatesresolvers.prodresolver.acme.keytype=RSA4096 - --certificatesresolvers.prodresolver.acme.tlschallenge=true - --certificatesresolvers.prodresolver.acme.httpchallenge=true - --certificatesresolvers.prodresolver.acme.httpchallenge.entrypoint=web - --certificatesresolvers.prodresolver.acme.storage=/letsencrypt/acme.json networks: - traefik restart: unless-stopped networks: traefik: name: traefik_network driver: bridge volumes: traefik-logs: