我正在 docker(官方 Consul 镜像)中运行 Consul,并且我有一个向 consul 注册的服务。服务注册,但 consul 在轮询其 DNS 服务时报告的 IP 是用于联系 Consul 代理的内部 docker IP。
dig @localhost -p 8600 address-norm.service.consul
;; QUESTION SECTION:
;address-norm.service.consul. IN A
;; ANSWER SECTION:
address-norm.service.consul. 0 IN A 172.17.0.3
Run Code Online (Sandbox Code Playgroud)
而不是172.17.0.3我希望领事将服务 IP 更改为领事主机 IP,因为该服务隐藏在该主机上,仅公开其所需的端口。我没有使用Registrator,我公开的服务已Spring Cloud Consul集成 api。
编辑:
这是我用来在 Docker 中启动 consul 的命令,我当前的解决方案是一个 python 脚本,它使用 HTTP API 并提取 IP 地址和端口。
docker run -d --name consul --net=host consul agent -server -bootstrap \
-node docker -ui -client=0.0.0.0 -bind=$NET_IP -advertise=$NET_IP
Run Code Online (Sandbox Code Playgroud)
Net_IP只是运行docker的主机的本地网络IP
| 归档时间: |
|
| 查看次数: |
1119 次 |
| 最近记录: |