原先部署单体式应用是把服务打成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解决了什么问题:网络