解决SpringBoot在Docker运行注册IP不正确的问题

图片描述
在开发中常常会碰到SpringBoot应用在启动成功之后,发现注册到注册中心的IP不是本身想要的。实际开发联调的时候也常常碰到本身本地启动应用怎么获取到一个怪怪的IP,经过别的机器没法链接到这个IP。发现有虚拟机的时候,就把虚拟机网卡停掉,而后才能获取本地局域网IP。固然也能够每一个服务都指定IP的方式来解决这个问题,只有几个实例还能够,可是有几十或者上百个实例如何解决呢?正则表达式

出现这种问题的缘由是当前机器有多个网卡(若有虚拟网卡)形成的,SpringBoot在获取IP的时候没法获取到正确的IP,在实际生产环境中服务器自己也有多块网卡,SpringBoot启动时只能选择一个IP,可否经过简单的配置就能解决这个问题呢?答案是,能够的,SpringBoot自己自带这种功能。spring

SpringBoot提供了三种配置方式,能够单独使用,也能够混合使用。docker

配置忽略网络接口

使用Docker中运行SpringBoot服务时,服务注册的时候,能够忽略掉一些指定名称的网络接口,想要忽略的网络接口的名称可使用正则表达式来配置。下面的配置就是忽略名称为docker0网络接口和全部名称以veth开头的网络接口:bootstrap

application.yml.服务器

spring:
  cloud:
    inetutils:
      ignoredInterfaces:
        - docker0
        - veth.*

配置使用指定网络接口

相反,也可使用正则表达式配置只使用指定的网络接口地址,下面配置的例子就只使用192.168开头和10.0开头的ip地址,其余的地址都不会使用。微信

bootstrap.yml.网络

spring:
  cloud:
    inetutils:
      preferredNetworks:
        - 192.168
        - 10.0

配置使用site-local地址

若是SpringBoot服务只是在局域网内使用,不会被外部调用的话,就可使用site-local方式配置,配置方式以下:app

.application.ymlspa

spring:
  cloud:
    inetutils:
      useOnlySiteLocalInterfaces: true

你在实际使用过程当中是否也碰到了这种问题呢?帮你解决问题了吗?有问题能够加个人微信(zhuzhsh)或者关注个人公众号(xtech100)持续关注哟!code

相关文章
相关标签/搜索