Docker 容器內運行 Dubbo 服務

原文:http://www.aqcoder.com/post/content?id=41

在使用 Docker 容器內運行 Dubbo 服務的時候一個令人很頭痛的問題就是服務地址註冊。

Docker 容器內有自己的 IP 段,和宿主主機是隔離的,Dubbo 會使用容器內的 IP 註冊到 zookeeper 註冊中心上。這樣其他的服務是無法訪問的。

方式一:–host

一個很直接的方案就是直接使用 Docker 的 --host 選項:

docker run --name my-micro-server -d --host --restart=always my-micro-server-image

這樣 Docker 容器將會和宿主主機共享網絡。自然就不會有 IP 註冊問題了。

但是,當你的機器含有多個虛擬網卡是,Dubbo 有時會抽風,包括你在 Window 環境下調試是 Comsumer 的 IP 也會抽風。

因此,這裏推薦第二種方式:

方式二:Dubbo_IP_TO_REGISTRY

其實 Dubbo 提供了一個環境變量 Dubbo_IP_TO_REGISTRY,當次環境變量存在時,Dubbo 會使用次環境變量的值去註冊。因此我們把啓動容器腳本改爲:

docker run --name my-micro-server -d -p 8080:8080 -p 28880:28880 --restart=always -e Dubbo_IP_TO_REGISTRY=192.168.2.2  my-micro-server-image

上面的 IP 和端口根據實際情況填寫。完美解決註冊 IP 亂掉的問題。

其他相關環境變量:

  • Dubbo_IP_TO_REGISTRY — 註冊到註冊中心的IP地址
  • Dubbo_PORT_TO_REGISTRY — 註冊到註冊中心的端口
  • Dubbo_IP_TO_BIND — 監聽IP地址
  • Dubbo_PORT_TO_BIND — 監聽端口

ravenq

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章