一般微服務架構會包含若干個微服務,而每個微服務可以有多個實例,如果每個微服務都有手動啟停,那么效率就很低、維護量比較大。
所以我們可以使用Docker Compose來輕松、高效地管理容器。
一、安裝Docker Compose
網上安裝方法有很多,附上centos7的鏈接地址。
二、使用Spring Cloud構建微服務
當然,你也可以使用doubbo框架來構建。項目結構如下圖,discovery是服務注冊中心,provider是服務生產者,consumer是服務消費者。

本地先啟動discovery服務再啟動其他兩個服務,游覽器輸入http://localhost:8082/user/test,游覽器即可顯示用戶信息。代碼分享到了github,點擊這里下載。
三、使用Dockerfile構建鏡像文件
雖然使用maven插件來構建Docker鏡像更簡單一些,但是我是在windows環境下開發的,而docker環境在虛擬機里,所以放棄了。
1.獲取服務的jar包
修改每個項目的application.yml配置文件,將eureka.client.service-url.defaultZone這個的域名localhost改為discovery,
因為默認情況下Compose以服務名稱作為hostname被其他容器訪問,否則其他兩個服務無法注冊到discovery。
在項目所在目錄打開cmd,執行命令mvn clean package 即可獲得對應jar包(操作三次),分別是consumer-0.0.1-SNAPSHOT.jar,discovery-0.0.1-SNAPSHOT.jar,provider-0.0.1-SNAPSHOT.jar,
然后上傳到l服務器/usr/local/docker目錄。
2.構建鏡像
cd /usr/local/docker 進入工作目錄
vi Dockerfile,內容如圖

docker build -t provider:0.0.1 . 完成構建
然后再修改jar包名稱 和 端口號,依次構建consumer和discovery。
輸入命令docker images -a ,即可查看剛剛構建的鏡像。
四、編寫docker-compose.yml文件
vi docker-compose.yml

這里需要注意幾點:1.ports這個是必須要加的,不然的話容器啟動后在宿主機可以訪問,但是外網不能訪問。百度docker-compose.yml常用命令了解更多。
2.還有一個就是容器間網絡訪問的問題,使用networks命令自定義網絡來使它們處於同一個網絡環境。
最后,輸入docker-compose up 啟動,啟動完畢后,在游覽器輸入http://192.168.75.132:8080/即可看到注冊中心(192.168.75.132是我虛擬機的ip):

訪問http://192.168.75.132:8082/user/test,即可看到結果(有時候報錯,鏈接超時多試幾次)。

至此,大功告成!
