docker - 无法让 traefik 在 docker swarm 上充当反向代理
问题描述
我设置了一个运行 Raspbian Stretch Lite 和 Docker 18.06.1-ce 的 3x Raspberry Pi 3 集群。到目前为止,Swarm 已初始化并且工作正常。我阅读了有关在 docker swarm ( 1 , 2 )上设置 traefik 的文档,但我无法从 traefik 获取 whoami 容器。
这是我的stack.yml:
version: '3'
networks:
proxy:
external: true
services:
traefik:
image: traefik
command: --api --docker --docker.swarmMode --docker.watch
deploy:
placement:
constraints:
- node.role == manager
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- proxy
ports:
- "80:80"
- "443:443"
- "8002:8080"
whoami:
image: stefanscherer/whoami
networks:
- proxy
deploy:
labels:
- "traefik.port=80"
- "traefik.docker.network=proxy"
- "traefik.frontend.rule=Path:/whoami"
堆栈正在运行:
$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
tx0npbsb3t0k traefik_traefik replicated 1/1 traefik:latest *:80->80/tcp, *:443->443/tcp, *:8002->8080/tcp
7fqaew880p9p traefik_whoami replicated 1/1 stefanscherer/whoami:latest
代理网络使用覆盖驱动程序和可附加标志设置。
Traefik 仪表板可访问并显示 whoami 前端和后端。但是在我得到的浏览器中打开http://pinode1/whoami/Error 502 Bad Gateway
(带或不带斜杠)。
我已经在另一台非集群机器上成功运行和服务 whoami,所以我想知道集群设置有什么问题。
解决方案
推荐阅读
- python - Cmake 在 Windows 10 上找不到 python37.dll,但文件路径在缓存文件中。(pybind11)
- node.js - Socket.io + NodeJS IONIC CORS 问题
- node.js - 异步函数内部的异步错误
- electron - 未捕获的错误:无法在电子应用程序上调用远程函数“capturePage”
- python - 如何增加小应用程序的 Heroku Slug 大小?
- node.js - 在 NodeJS 中遍历 JSON 文件
- javascript - React.js onChange标签挂起
- mongodb - 如何在mongodb重复错误中检索错误对象
- c# - Blazor 中的 js 互操作的静态扩展如何工作?
- javascript - 如何使用 JavaScript for 循环将 ASCII 代码转换为单词