文章目录[隐藏]
开发环境下,没有使用docker swarm 方式部署,没有问题。但是线上的生产环境使用了docker swarm做了集群,网络方式使用了 overlay方式 ,这样造成一个问题,如果容器中的服务向eureka注册时,ip地址获取到的永远都是第一张网卡的ip,这样造成的问题就是使用feign无法访问容器服务,但是容器间ping的通。
必须在bootstrap.yml文件中添加配置才能生效,在application.yml中添加无效!
spring:
cloud:
inetutils:
ignoredInterfaces: //匹配正则表达式忽略
- docker0
- veth.*
spring:
cloud:
inetutils:
preferredNetworks: //匹配正则表达式优先使用ip段,list配置 从上到下找,找到哪个用哪个
- 192.168
- 10.0
....
environment:
- spring.cloud.inetutils.ignoredInterfaces=docker0,veth.*
....
....
environment:
- spring.cloud.inetutils.preferredNetworks=192.168,10.0