docker - 在另一台主机上的 Netflix eureka 服务发现服务器中远程 dockerised spring boot 应用程序注册
问题描述
我们在一台主机上托管了 Netflix Eureka 服务发现服务器和 API 网关,并在另一台主机上拥有一个 dockerized spring boot 服务当我们将该服务注册到 Eureka 服务发现服务器时,它需要容器 IP 地址。因此,当我们按预期调用该服务时,未找到该服务。那么将远程 docker 服务注册到服务发现服务器时的最佳实践是什么。
解决方案
一种方法是使用环境变量来设置主机 IP。
假设您使用 *.yml 文件作为服务配置文件,您可以在其中设置如下内容:
eureka:
instance:
preferIpAddress: true
ipAddress: "${HOST}"
client:
fetch-registry: true
register-with-eureka: true
serviceUrl:
defaultZone: http://<eureka-host>:<eureka-port>/eureka/
因此,您可以将主机 IP 作为环境变量注入,同时使用您的服务破坏 docker 容器:
docker container run -e HOST=host_ip IMAGE_NAME