services: traefik: image: traefik:v2.11.3 command: - --log.level=INFO - --entrypoints.web.address=:80 - --entrypoints.web.http.redirections.entrypoint.to=websecure - --entrypoints.web.http.redirections.entrypoint.scheme=https - --entrypoints.websecure.address=:443 - --entrypoints.websecure.http.tls=true - --entrypoints.websecure.http.tls.certResolver=le - --providers.docker.exposedbydefault=false - --certificatesresolvers.le.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory - --certificatesresolvers.le.acme.email=email@example.com - --certificatesresolvers.le.acme.storage=/letsencrypt/acme.json - --certificatesresolvers.le.acme.tlsChallenge=true ports: - "80:80" - "443:443" volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - ./letsencrypt/:/letsencrypt traefik-certs-dumper: image: ldez/traefik-certs-dumper:v2.8.3 entrypoint: sh -c ' while ! [ -e /data/acme.json ] || ! [ `jq ".[] | .Certificates | length" /data/acme.json | jq -s "add" ` != 0 ]; do sleep 1 ; done && traefik-certs-dumper file --version v2 --watch --source /data/acme.json --dest /data/certs' volumes: - ./letsencrypt:/data whoami: image: traefik/whoami:v1.8.1 labels: traefik.enable: 'true' traefik.http.routers.app.rule: Host(`example.com`) traefik.http.routers.app.entrypoints: websecure