Spring boot 使用ansible自动更新spring boot docker应用程序

Spring boot 使用ansible自动更新spring boot docker应用程序,spring-boot,docker,ansible,Spring Boot,Docker,Ansible,我们计划向客户发布SpringBoot应用程序。在正确的过程中,每次发布新版本时,我们都必须卸载rpm并使用rpm重新安装。 我们希望在有新版本可用时自动更新应用程序。基本上,客户不必处理应用程序的更新。 我们考虑的不是rpm,而是docker映像,它包含了所有依赖项。 . 如何实现此功能 根据我到目前为止读到的内容,如果我们打包使用ansible+docker部署应用程序,ansible(使用了望台或自定义代码)将ping an IP,当发现新版本时,将停止应用程序,将应用程序从目的地拉出,然

我们计划向客户发布SpringBoot应用程序。在正确的过程中,每次发布新版本时,我们都必须卸载rpm并使用rpm重新安装。 我们希望在有新版本可用时自动更新应用程序。基本上,客户不必处理应用程序的更新。 我们考虑的不是rpm,而是docker映像,它包含了所有依赖项。 . 如何实现此功能

根据我到目前为止读到的内容,如果我们打包使用ansible+docker部署应用程序,ansible(使用了望台或自定义代码)将ping an IP,当发现新版本时,将停止应用程序,将应用程序从目的地拉出,然后部署并启动。 我的理解正确吗?

自动化部署的步骤 码头工人
  • 创建应用程序并将其与任何JDK docker映像对接。我们有maven包来dockerise应用程序
将插件添加到
pom.xml


com.spotify
docker maven插件
0.4.10
工作需求服务分析处理器
src/main/docker
/
${project.build.directory}
${project.build.finalName}.jar


org.springframework.boot
springbootmaven插件
com.google.cloud.tools
jib maven插件
${jib maven plugin.version}
采用OpenJDK:11 jre热点
WebSockHandler:最新版本
嘘
-c
chmod+x/entrypoint.sh&&;同步及&/entrypoint.sh
8090
总是
0
""
..........
真的
有许多选项可用于停靠Spring应用程序

吉特
  • 将代码推送到git服务器,如Bitbucket、Gitlabs、Github等
  • 为生产发布创建主分支,并为开发开发创建分支
詹金斯
  • 当您提交或合并从开发到主功能的更改时,触发jenkins作业以创建docker映像。这是基于我们在git服务器上添加的挂钩
  • 如果docker映像创建成功,将触发部署的作业
反向代理或负载平衡器
  • 要实现零停机时间,请使用load balnacer(反向代理,如NGINX with upstream)在容器的多个副本中运行容器

这适用于任何应用。如果您有特殊要求,请使用基本示例代码更新您的问题,并使用Docker和自动化步骤更新答案。

Docker并没有使这一点变得更容易。通常,图像版本位于图像名称的“标记”部分,因此您必须发现新版本,停止旧容器,然后启动新容器。RPM更新可能更容易。如何部署新容器以及如何使用这些容器取决于您(如果ansible有效,docker适合依赖关系管理,那么为什么ansible不可用,声明性特性使其易于回滚)-您对部署的描述会导致停机,如果这是一个问题,可以研究蓝色/绿色部署。例如,可以在管道中添加playbook执行步骤,以便在每次生成新映像后更新部署。Git+Docker+Jenkins+Proxy可使应用程序零停机时间工作。所有发布都将基于您的提交,rest将自动执行。@在这种情况下,masseyb宕机是可以接受的。你能详细解释一下你建议的方法吗?@JinnaBalu jenkins在这里不起作用。这不是内部应用程序。感谢您的详细回复。这不是我想要的答案。我们有完整的管道。我的问题是,软件部署在客户的数据中心,并在新版本可用时自动更新。在这种情况下,我们无法推送更新。客户可以选择自动部署,否则他们将手动执行。手动构建Jenkins作业是Jenkins任何用户的选项。