在Docker容器发布端口时,应用程序在Eureka中使用IP而不是主机名注册
我dockerize我的Spring Boot应用程序并部署到Docker群集。
如果我不发布我的应用程序公开的端口,那么尤里卡客户端将主机名称作为实例的地址发送,如http://ecf28bdd26c5:8080
– 好
如果我发布的端口(使用Docker的--publish
参数),那么它注册与IP,如http://10.255.0.25:8080
– 坏
即使我明确地设置了eureka.instance.prefer-ip-address=false
。
如何强制Eureka客户端真正使用主机名?
通过显式设置主机名eureka.instance.hostname=${SOME_VAR}
或忽略某些接口:
从文档 :以下configuration将忽略“docker0”接口和以“veth”开头的所有接口。
application.yml spring: cloud: inetutils: ignoredInterfaces: - docker0 - veth.*
您也可以使用正则expression式列表强制使用指定的networking地址:
application.yml spring: cloud: inetutils: preferredNetworks: - 192.168 - 10.0