Java Eureka服务始终使用主机名注册实例,即使我在;首选ip地址:true“;

Java Eureka服务始终使用主机名注册实例,即使我在;首选ip地址:true“;,java,spring-boot,microservices,netflix-eureka,Java,Spring Boot,Microservices,Netflix Eureka,我想用IP地址而不是主机名在Eureka中注册我的micro服务 我尝试了首选ip地址和eureka.instance.preferIpAddress=true属性。这些都不适合我 这是我的eureka服务应用程序.yml文件 这是我的授权服务器micro service application.yml 但仍然使用eureka控制台显示使用主机名(localhost)而不是IP地址注册的服务 我使用的是SpringBoot2.2.2版本和SpringCloudHoxton.RELEASE。

我想用IP地址而不是主机名在Eureka中注册我的micro服务

我尝试了首选ip地址和eureka.instance.preferIpAddress=true属性。这些都不适合我

这是我的eureka服务应用程序.yml文件

这是我的授权服务器micro service application.yml

但仍然使用eureka控制台显示使用主机名(localhost)而不是IP地址注册的服务

我使用的是SpringBoot2.2.2版本和SpringCloudHoxton.RELEASE。我猜这些属性不能正常工作


有人遇到过同样的问题吗?

嗯,我在手机上,所以看不清所有东西,但在声明中似乎是个问题

正确的语法是

 eureka.instance.preferIpAddress
而您正在使用

 eureka.instance.prefer-Ip-Address
见文件:

eureka.instance.preferIpAddress=true将使实例使用IP地址注册到eureka服务器。您不需要在任何配置中提供IP地址,因为应用程序将自动从系统中获取IP地址

在最坏的情况下,您可以定义特定的IP地址


如果您设置eureka.instance.hostname或eureka.instance.ipAddress,则这些将始终用于EurekaInstanceConfigBean中,因此如果在注册过程中未将其发送到服务器,我们需要查看如何使用它们来构建InstanceInfo。

最后,我找到了可以在哪里看到首选ipAddress属性更改。将鼠标悬停在实例上。然后在左下角可以看到IP

在应用属性之前首选地址=true

应用属性后,preferIpAddress=true


Hi@Kunal Vohra,我以前也试过eureka.instance.preferIpAddress。但结果是一样的。你们能不能在EurekaInstanceConfigBean上设置一个调试点,看看启动时传递了什么。我调试了它。它显然是从下面的方法@Override public String getHostName(boolean refresh){if(refresh&&!this.hostInfo.Override){this.ipAddress=this.hostInfo.getIpAddress();this.hostname=this.hostInfo.getHostName();}返回this.preferIpAddress?this.ipAddress:this.hostname;}表示该属性正在工作。但在Eureka控制台中,我仍然可以看到localhost而不是IPO。您知道为什么它没有显示在Eureka仪表板中吗?我找到了@Kunal Vohra。谢谢你的帮助。preferIpAddress属性工作正常。但是在状态部分,它没有显示IP地址。当我将鼠标悬停在实例上时,在左下角我可以看到更改的IP。如何使用LoadBalancerClient从另一个实例获取服务的IP地址?您需要IP地址的目的是什么?实际上我需要Docker机器的IP。我需要docker machne ip地址用于发送电子邮件的服务。它必须发送带有与其他服务相关的URL的电子邮件。如何将Docker机器ip地址传递给emailService?在这种情况下,您应该使用服务注册表。打那样的电话给服务机构是不好的做法。