Mic*_*der 8 spring docker spring-boot netflix-eureka spring-cloud-netflix
Spring Boot Cloud Disovery 问题,Windows 10 上 docker 升级后 Eureka 主机名的问题。(注意:docker 不托管 spring 服务,只是 mariadb、rabbitmq 和 zipkin)
概括
一切正常,直到今天的 docker 更新,在 docker 升级之后
Eureka 返回“host.docker.internal”作为我的开发箱的主机名(托管 spring boot 云服务的机器)
这一直工作正常,直到今天 Windows 10 上的 docker 升级。
关于这一点的任何指导?
- - - - - - - - - - - - - - - 细节 - - - - - - - - - - ---------
”
---------------- spring 版本 ----------
buildscript {
ext {
springCloudVersion = "Greenwich.SR1"
springBootVersion = "2.1.5.RELEASE"
springRetryVersion = "1.2.4.RELEASE"
lombokVersion = "3.6.4"
mySqlConnectorVersion = "8.0.15"
springBootAdminVersion = "2.1.5"
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 Windows 10 Enterprise 进行 Java 开发。
我使用 docker-compose 在我的 Windows 10 机器上的开发环境中托管 mariadb、zipkin 和 rabbitmq
我有一个带有 8 个 spring boot 云服务的多项目 gradle 构建
其中一项服务是托管 Eureke 的 Spring Cloud Discovery 服务
其他 spring 云服务是 eureka 客户端。
直到今天,一切正常 1) Eureka spring boot 云服务先启动 2) 其他 spring boot 云服务是 eclipse 启动的客户端,注册并查询 spring cloud discovery 客户端代码以获取其他服务的 URL
今天推送了windows 10的最新docker,我安装了(我一直在通过其他几个docker更新开发这个应用)。
我更新了docker,重新启动了。
重启后,尤里卡服务器返回“host.docker.internal”作为 URL 中的主机名,而不是 http:/mymachinename:8080
升级前我没有网络数据,但现在有了
U:\>ipconfig
Windows IP Configuration
Ethernet adapter vEthernet (DockerNAT):
Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 10.0.75.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . : net.FOO.BAR.com
IPv4 Address. . . . . . . . . . . : 146.122.145.71
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 146.122.145.1
Ethernet adapter vEthernet (Default Switch):
Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 172.28.74.49
Subnet Mask . . . . . . . . . . . : 255.255.255.240
Default Gateway . . . . . . . . . :
Run Code Online (Sandbox Code Playgroud)
我的客户端 application.properties 文件是:
eureka.client.serviceUrl.defaultZone= http://${ci2.srvhost}:8761/eureka/
eureka.instance.hostname=${ci2.srvhost}
spring.cloud.client.hostname=${ci2.srvhost}
Run Code Online (Sandbox Code Playgroud)
服务器 application.property 文件
server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
logging.level.com.netflix.eureka=OFF
logging.level.com.netflix.discovery=OFF
Standard reboot after docker updated
The expected URL from discovery is
http://mymachine:8091
returned value after docker upgrade
http://host.docker.internal:8091
Run Code Online (Sandbox Code Playgroud)
小智 12
我遇到了类似的问题,尤里卡服务器在 host.docker.internal 而不是 localhost 上注册服务。
我的问题是在 C:\Windows\System32\Drivers\etc\hosts 位置更改了主机文件。我删除了主机文件中的所有行,并使用具有管理员权限的 npp 保存它。重新启动服务器发布此更改。
看起来“Docker Desktop”正在更改主机文件。
感谢您对 Windows 上的主机文件的提示
我发现docker在主机文件中为host.docker.internal和gateway.docker.internal添加了别名。
我猜测 Eureka 从 IP 进行主机查找并返回 host.docker.internal 。
我不是主机文件方面的专家,但我为我的 IP 添加了实际主机名的别名(注意:我们使用静态 IP)。执行此操作后,docker 在重新启动时没有更改我的主机文件,并且 ip->host 的反向查找现在返回我的计算机名称而不是 host.docker.internal
------------------ modified hosts file for windows
#I added an alias from my machine name to the IP before the docker added aliases
#
146.122.145.71 mymachine.net.foo.com
# Added by Docker Desktop
146.122.145.71 host.docker.internal
146.122.145.71 gateway.docker.internal
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4809 次 |
| 最近记录: |