因为我正在努力将真实 IP 转发到 docker 应用程序,所以我现在在主机网络模式下运行 docker traefik。
traefik 和服务正常运行。这是我的配置
docker-compose.yaml:
---
services:
traefik:
image: traefik:latest
container_name: traefik
network_mode: host
volumes:
- ./traefik.yaml:/traefik.yaml
- ./letsencrypt/:/letsencrypt/
- /run/docker.sock:/var/run/docker.sock:ro
labels:
- traefik.enable=true
- traefik.http.routers.traefik.rule=Host(`frontal.cestpasla.norhere.net`)
- traefik.http.routers.traefik.entrypoints=websecure
- traefik.http.routers.traefik.service=api@internal
- traefik.http.services.traefik-0000traefik.loadbalancer.server.port=8080
- traefik.http.routers.traefik.tls.certresolver=myresolver
- traefik.http.routers.traefik.middlewares=traefik-auth
- traefik.http.middlewares.traefik-auth.basicauth.users=me:encryptedpassword
静态 traefik yaml 文件:
---
api:
dashboard:
providers:
docker:
exposedByDefault: false
entrypoints:
web:
address: 10.20.0.2:80
websecure:
address: 10.20.0.2:443
certificatesresolvers:
myresolver:
acme:
tlschallenge: true
email: [email protected]
storage: /letsencrypt/acme.json
#log:
# level: DEBUG
有问题的行是:
- traefik.http.services.traefik-0000traefik.loadbalancer.server.port=8080
仪表板服务名称为traefik-0000traefik
,可能是因为 docker-compose 文件位于名为 的文件夹中0000.traefik
。我不记得在测试的哪个阶段我突然必须添加此行,但是截至目前,在网络主机模式下,如果我不使用此行,我可以在 docker 日志中看到此错误:
2025-03-12T11:25:38Z ERR error="service \"traefik-0000traefik\" error: port is missing" container=traefik-0000traefik-09ccfe569180f81f22b135fd75082ed017ce95a7dc0ade1ab5a7e2bfbd960886 providerName=docker
问题是:
如果我必须对仪表板服务使用配置行,我至少可以选择服务名称,traefik_dashboard
或者类似名称吗?以及如何选择?