首页 > 解决方案 > 带有 traefik 和内部网络的 Docker-compose 服务

问题描述

我想在我的容器中同时使用internal和使用外部traefik网络。问题:当我定义一个internal网络时,traefik 失去了与我的服务的通信。

 traefik_webgateway                 internal network
 +----------+          +--------------------------+
 | traefik  |          |   +------+     +-----+   |
 |        +--------------+ | app  |     | api |   |
 |        | |          | | +------+     +-----+   |
 |        | |  proxy   | |                        |
 |        | |          | |  +-----+      +------+ |
 |        | |          | |  |auth |      |worker| |
 |        +--------------+  +-----+      +------+ |
 |          |          |                          |
 +----------+          +--------------------------+

码头工人-compose.traefik.yml:

services:
  traefik:
    image: traefik:v2.4
    restart: unless-stopped
    ports:
      - 80:80
      - 8080:8080
      - 443:443
    networks:
      - webgateway

networks:
  webgateway:
    driver: bridge

码头工人-compose.yml:

services:
  proxy:
    networks:
      - internal # <=== this causes traefik point the healthcheck to the 172 IP instead of the 192 IP (see Edit below)
      - traefik
    labels:
      - traefik.http....

  app:
    networks:
      - internal
  api:
    networks:
      - internal
  auth:
    networks:
      - internal
  worker:
    networks:
      - internal

networks:
  internal:
  traefik:
    external: 
      name: traefik_webgateway

我不希望我的服务使用外部traefik网络,因为我希望我的服务被命名为我的绿色/蓝色部署。

我想知道为什么会发生这种情况以及是否有解决方案。

提前致谢!

编辑:我获得了proxy容器的网络:

 docker inspect -f '{{range.NetworkSettings.Networks}}  {{.IPAddress}}{{end}}' <container id>

并获得 2 个 IPS:

172.18.A.A  192.168.B.B

我有一个 ping /health 的健康检查。在 traefik 仪表板上:

http://172.18.A.A:8000

Traefik 无法与此 IP 通信。有时它可以在选择其他 IP 时:192.168.B.B.

proxy容器内,我能够ping proxy(它使用“B”IP)

PING proxy (192.168.B.B): 56 data bytes
64 bytes from 192.168.16.4: seq=0 ttl=64 time=0.090 ms
64 bytes from 192.168.16.4: seq=1 ttl=64 time=0.080 ms
64 bytes from 192.168.16.4: seq=2 ttl=64 time=0.065 ms
64 bytes from 192.168.16.4: seq=3 ttl=64 time=0.069 ms

我能够 ping:ping 192.168.B.B 我无法 ping:ping 172.18.A.A

标签: docker-composetraefik

解决方案


推荐阅读