解決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

相關文章
相關標籤/搜索