带Docker的CI / CD - 最终部署步骤是什么?

时间:2017-05-23 08:15:11

标签: docker jenkins continuous-deployment

我正在开发一个小型网站(Ruby / Sinatra),供我内部使用。 (简单地说,它会处理一些源数据并生成报告。)

我想使用Docker进行部署并设置适用于我的开发环境的设置,但我试图理解"生产"的工作流程。部署(我们正在使用Jenkins)。

我已经阅读了很多关于使用Docker的部署工作流程的文章,但他们似乎都停留在"然后将您的图像推送到Docker注册表"。似乎缺少的是如何拍摄该图像并实际更新应用程序。

我很欣赏每个应用程序都可能有所不同,但下一步是什么?我知道可以使用很多不同的框架,比如Chef,Puppet,Ansible,但我的问题是 - 我如何将它集成到我的CI / CD管道中?例如。做一份工作"推动"生产服务器的更改,或者Jenkins从服务器是否应该在生产服务器上运行以直接在服务器上执行作业?

2 个答案:

答案 0 :(得分:1)

有几个编排工具,如docker-swarm,kubernetes和rancher。例如,在docker swarm中,您可以创建服务,并且只能为一个实例更新蓝绿色部署版本(然后没有蓝绿色:))如果您只使用docker run,则应检查正在运行的容器,停止如果它使用较新的映像版本运行启动docker容器,请将其删除。

答案 1 :(得分:0)

这取决于您的应用程序配置如何运行。就我而言,我在系统脚本中调用了“docker run”。如果它停止,它被配置为重新启动。

所以,在我的Jenkins文件中,在我将图像推送到注册表之后,我执行了“docker pull”(我的Jenkins代理程序在运行应用程序的同一个框上运行),然后是“docker stop” 。这会导致应用程序退出,然后重新启动,这会导致它获取刚刚提取的新版本,现在它正在运行新版本。