54 lines
1.8 KiB
YAML
54 lines
1.8 KiB
YAML
version: "3.9"
|
|
|
|
services:
|
|
traefik:
|
|
image: traefik:latest
|
|
container_name: traefik
|
|
restart: unless-stopped
|
|
environment:
|
|
# Replace this placeholder with your DuckDNS token
|
|
- DUCKDNS_TOKEN=03a4d8f7-695a-4f51-b66c-cc2fac555fc1
|
|
networks:
|
|
- web
|
|
ports:
|
|
- "80:80" # http
|
|
- "443:443" # https
|
|
- "8089:8089" # traefik dashboard (secure it if exposed)
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
- ./letsencrypt:/letsencrypt # <-- keep this directory inside WSL filesystem
|
|
- ./traefik_dynamic.yml:/etc/traefik/traefik_dynamic.yml:ro
|
|
command:
|
|
|
|
- --api.insecure=false
|
|
- --api.dashboard=true
|
|
- --entrypoints.web.address=:80
|
|
- --entrypoints.websecure.address=:443
|
|
- --entrypoints.dashboard.address=:8089
|
|
- --providers.docker=true
|
|
- --providers.docker.endpoint=unix:///var/run/docker.sock
|
|
- --providers.docker.exposedbydefault=false
|
|
- --providers.file.filename=/etc/traefik/traefik_dynamic.yml
|
|
- --providers.file.watch=true
|
|
- --certificatesresolvers.duckdns.acme.email=sterlenjohnson6@gmail.com
|
|
- --certificatesresolvers.duckdns.acme.storage=/letsencrypt/acme.json
|
|
- --certificatesresolvers.duckdns.acme.dnschallenge.provider=duckdns
|
|
- --certificatesresolvers.duckdns.acme.dnschallenge.disablepropagationcheck=true
|
|
|
|
whoami:
|
|
image: containous/whoami:latest
|
|
container_name: whoami
|
|
restart: unless-stopped
|
|
networks:
|
|
- web
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.routers.whoami.rule=Host(`whoami.sj98.duckdns.org`)"
|
|
- "traefik.http.routers.whoami.entrypoints=websecure"
|
|
- "traefik.http.routers.whoami.tls=true"
|
|
- "traefik.http.routers.whoami.tls.certresolver=duckdns"
|
|
|
|
networks:
|
|
web:
|
|
external: true
|