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,内存,硬盘空间等资源
  • 判断服务是否启动成功
相关文章
相关标签/搜索