--- services: traefik: image: traefik:latest container_name: traefik command: - "--api.dashboard=false" - "--ping=true" - "--log.level=INFO" - "--accesslog=true" - "--global.sendAnonymousUsage=false" - "--global.checkNewVersion=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--providers.docker.network=${NETWORK_NAME}" - "--providers.file.directory=/etc/traefik/dynamic" - "--providers.file.watch=true" - "--entrypoints.web.address=:80" - "--entrypoints.web-secure.address=:443" - "--entrypoints.web.http.redirections.entryPoint.to=web-secure" - "--entrypoints.web.http.redirections.entryPoint.scheme=https" - "--entrypoints.web.http.redirections.entryPoint.permanent=true" - "--entrypoints.web-secure.http.middlewares=security-headers@file" - "--certificatesresolvers.resolver.acme.tlschallenge=true" - "--certificatesresolvers.resolver.acme.email=${ACME_EMAIL}" - "--certificatesresolvers.resolver.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" volumes: - ../.data/traefik/letsencrypt:/letsencrypt - /var/run/docker.sock:/var/run/docker.sock:ro - ./dynamic:/etc/traefik/dynamic:ro restart: always healthcheck: test: ["CMD", "traefik", "healthcheck", "--ping"] interval: 30s timeout: 5s retries: 3 start_period: 10s labels: - "com.centurylinklabs.watchtower.enable=true" networks: - compose_network networks: compose_network: name: ${NETWORK_NAME} external: true