原先部署單體式應用是把服務打成jar包放到服務器,經過shell腳本啓停服務。對於微服務來講,這種部署方案十分繁瑣。由於服務不少,每一個服務都不止一個副本,而且服務部署在不一樣的機器。若是系統換版,光啓停服務都須要一段時間。能夠經過jenkins這種CI/CD工具幫助快速部署服務,可是生產環境可能不容許部署這種工具。對於微服務來講,須要動態擴縮容,版本回滾,服務上下線,故障自動轉移,傳統的部署方案已經再也不適用。使用docker swarm能夠幫助咱們快速搭建微服務java
使用docker的部署方案:
總體流程圖:
git
Boot項目使用dockerfile-maven-plugin插件,會在maven deploy的同時,把代碼打到鏡像內並推送到倉庫中。Dockerfile在本地配置,隨代碼一同推送至gitlab,jenkins自動化地完成從gitlab拉取代碼-構建鏡像-推送鏡像至harbor-到目標服務器部署服務的操做。服務的部署即docker stack –c docker-compose.yml app。Docker會根據docker-compose.yml的配置從鏡像倉庫拉取鏡像並啓用容器。docker
應用:使用dockerfile-maven-plugin的maven插件和編寫dockerfile。代碼在gitlab保存,jenkins構建時會使用該插件根據dockerfile的配置將服務打成鏡像推送到鏡像倉庫。shell
基礎環境:tomcat
生產環境:互聯網環境拉取鏡像,docker save拉取到本地,拷至生產環境再docker load,docker tag至生產環境的harbor,再用docker-compose部署。若是構建的鏡像太大,能夠在本地把服務打成jar包,到生產機器構建鏡像並推送到harbor。服務器
和手動部署並啓用服務相比,即在一臺一臺機器啓動tomcat或java -jar,swarm解決了什麼問題:網絡