【发布时间】:2018-06-04 11:16:02
【问题描述】:
我(就像我们所有使用 Docker Cloud 的人一样)将我的应用程序迁移到新环境,所以我选择了 Docker Swarm CE。我使用 Traefik 作为反向代理,在迁移之前,它可以按照文档处理段,但由于某种原因,它无法在 Swarm 中处理这些段。
我的服务为给定的路径前缀公开端口 3000 和 3001。这是 docker-compose.yml 中用于有问题的服务的部分:
my-service:
image: my-service-image
deploy:
restart_policy:
condition: on-failure
labels:
traefik.port: 80
traefik.serviceapi.backend: api
traefik.serviceapi.frontend.entryPoints: "http,https"
traefik.serviceapi.frontend.rule: "PathPrefixStrip:/service/api"
traefik.serviceapi.port: 3000
traefik.servicesocket.backend: socket
traefik.servicesocket.frontend.entryPoints: "http,https,ws,wss"
traefik.servicesocket.frontend.rule: "PathPrefixStrip:/service/socket"
traefik.servicesocket.port: 3001
但由于某种原因,swarm 无法识别这些 traefik 片段,或者我遗漏了一些东西。
有人遇到同样的问题吗?
谢谢!
更新:
traefik:
image: traefik
command:
- "--web"
- "--docker"
- "--docker.swarmMode"
- "--docker.watch"
- "--docker.domain=my-domain"
- "--defaultentrypoints=http,https"
- "--entrypoints=Name:http Address::80 Redirect.EntryPoint:https"
- "--entrypoints=Name:https Address::443 TLS"
- "--acme"
- "--acme.storage=/etc/traefik/acme/acme.json"
- "--acme.entryPoint=https"
- "--acme.domains=my-domain"
- "--acme.httpChallenge.entryPoint=http"
- "--acme.email=email"
- "--logLevel=DEBUG"
deploy:
restart_policy:
condition: on-failure
ports:
- 80:80
- 443:443
- 8080:8080
volumes:
- ./var/run/docker.sock:/var/run/docker.sock
- ./traefik/acme/acme.json:/etc/traefik/acme/acme.json
我有 10 多个服务正常工作,唯一的问题是我无法到达我的服务端点,似乎 swarm 无法识别 traefik 段。
【问题讨论】:
-
请包含您的 compose 文件的其余部分,注意缩进,包括用于启动 traefik 的 compose 文件或命令、traefik 日志以及您在尝试连接到应用程序时设置的错误。
标签: docker docker-compose docker-swarm traefik