docker-compose - 带有 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
解决方案
推荐阅读
- c# - 一个特定上下文中缺少 AspNetCore ModelState 类型
- java - 如何在 XML JAVA 中将根元素设置为 List
- javascript - Django 循环遍历对象以在 Google 地图上放置对象标记
- reactjs - 反应 redux / 反应 thunks api
- flask - 无法使用 Flask mongoalchemy 连接到 mongodb atlas 集群
- nginx - 使用 PhusionPassenger 部署 Meteor:在 $PATH 中找不到节点
- kubernetes - Pod注入到istio的sidecar后,websocket连接会异常中断
- java - 是否可以转播/转播实时 FFMPEG 流?
- python - AttributeError:“int”对象没有属性“display”
- python - 空间极性/情感方法不起作用