Docker swarm部署spring boot服務

原先部署單體式應用是把服務打成jar包放到服務器,經過shell腳本啓停服務。對於微服務來講,這種部署方案十分繁瑣。由於服務不少,每一個服務都不止一個副本,而且服務部署在不一樣的機器。若是系統換版,光啓停服務都須要一段時間。能夠經過jenkins這種CI/CD工具幫助快速部署服務,可是生產環境可能不容許部署這種工具。對於微服務來講,須要動態擴縮容,版本回滾,服務上下線,故障自動轉移,傳統的部署方案已經再也不適用。使用docker swarm能夠幫助咱們快速搭建微服務java

使用docker的部署方案:
總體流程圖:
image.pnggit

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環境:只有部署了docker基礎環境,才能運行鏡像,需指定鏡像倉庫,安裝portainer-agent。
  • 搭建docker-swarm集羣:微服務運行的機器環境
  • 建立overlay網絡:應用運行的網絡環境,網絡內的容器能夠相互通信。
  • Harbor:docker鏡像倉庫,至關於gitlab,docker從harbor拉取鏡像部署容器
  • Portainer:監控docker容器信息
  • 編寫docker-compose.yml文件:定製微服務,即須要部署哪些服務,服務的鏡像來源,服務的部署方式,副本數,健康檢查方式等。

生產環境:互聯網環境拉取鏡像,docker save拉取到本地,拷至生產環境再docker load,docker tag至生產環境的harbor,再用docker-compose部署。若是構建的鏡像太大,能夠在本地把服務打成jar包,到生產機器構建鏡像並推送到harbor。服務器

和手動部署並啓用服務相比,即在一臺一臺機器啓動tomcat或java -jar,swarm解決了什麼問題:網絡

  • 一鍵部署。
  • 動態擴容縮容。若是流量大了,能夠很快加副本。
  • 故障轉移。若是某臺機器掛掉,服務會轉移到健康的機器
  • 可分配cpu,內存,硬盤空間等資源
  • 判斷服務是否啓動成功
相關文章
相關標籤/搜索