1

我正在尝试在 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 的回复?

4

1 回答 1

0

这似乎是 Traefik 中的一个错误。见https://github.com/containous/traefik/pull/2244

于 2017-10-17T13:38:24.200 回答