我正在尝试在 Docker Swarm 的 Traefik 反向代理后面运行由 2 个微服务组成的 Spring Boot 应用程序。为我的 Spring Boot Web 应用程序使用双网络堆栈时,应用程序没有响应。
我确实有以下网络
NETWORK ID NAME DRIVER SCOPE
c23c6ac30ecd bridge bridge local
0dcb7c122e69 docker_gwbridge bridge local
1e50cdf3eee7 host host local
wbhyv0itkveu ingress overlay swarm
7sxpebq9pp7j marc_default overlay swarm
e953c2393965 none null local
t8u63pf9l3cb traefik-net overlay swarm
和下面的配置启动 Traefik
docker service create \
--name traefik \
--constraint=node.role==manager \
--publish 80:80 \
--publish 8080:8080 \
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
--network traefik-net \
traefik \
--docker \
--docker.swarmmode \
--docker.domain=traefik \
--docker.watch \
—web
现在,有一个 docker-compose.yml 文件
version: '3'
services:
web:
image: myapp-web
env_file:
- db-params.env
environment:
- server.port=8080
deploy:
labels:
- 'traefik.port=8080'
networks:
- web
- default
be:
image: myapp-be
env_file:
- db-params.env
networks:
- default
networks:
web:
external:
name: traefik-net
以及启动复合的命令:
docker stack deploy -c docker-compose.yml marc
在 Traefik 中有一个可见的 URL:web-marc.traefik,它在 /etc/hosts 中定义
不幸的是,当我询问时,这只是一个超时”</p>
curl http://marc-web.traefik/
我试图从 Web 组件中删除默认网络。它可以通过 Traefik 到达 web 组件,但是(当然)它找不到 be 组件。
为什么我没有收到 Spring Boot 的回复?