我正在尝试通过docker provider在traefik中配置服务。我的traefik在裸机服务器上运行,而不是作为docker容器运行。
我正在尝试以下docker-compose.yaml:
version: '3.7'
services:
web:
image: nginxdemos/nginx-hello:plain-text
deploy:
endpoint_mode: dnsrr
labels:
- "traefik.enable=true"
- "traefik.http.routers.swarm-test.entrypoints=http-int"
- "traefik.http.routers.swarm-test.rule=Host('swarm-test.example.com')"
- "traefik.http.routers.swarm-test.service=swarm-test"
- "traefik.http.services.swarm-test.loadbalancer.server.port=8080"
networks:
- host
networks:
host:
external: true
我的traefik路由器不会显示此服务。
如果我在行中注释掉以下内容,则该服务将以10.0.0.0 IP地址出现在我的traefik中:
#networks:
# - host
但是10.0.0.0 IP地址是内部docker IP地址,因此在我的traefik裸露的Emtal服务器上设置10.0.0.0 IP不会使其与我的docker容器通信。
此示例中使用的映像仅通过简单的nginx安装公开8080端口以进行测试。
启用还是禁用 endpoint_mode:dnsrr 配置都没有关系。使用或不使用 endpoint_mode:dnsrr 配置,测试结果相同。
如何通过docker provider在traefik中配置此服务?