在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