Docker CD / CI工作流程的最佳实践是什么?

时间:2016-08-02 14:10:22

标签: git jenkins docker continuous-integration continuous-deployment

我对docker worlflow很新,我想知道什么是docker CD / CI工作流程的最佳做法...现在大多数文章似乎并没有真正谈论"部署& #34;码头工人的一部分,只有登记。

我想做什么:

  1. 进行一些代码更改
  2. 推送到Git
  3. Jenkins单元测试/ EE测试
  4. Jenkins构建了docker image
  5. 将泊坞窗图像存储在注册表中
  6. 在服务器上运行docker image。
  7. 为了实现步骤1-5,我有以下堆栈。

    用户推送到gitlab - > Gitlab webhook通知jenkins - >詹金斯建立项目 - >将图像存储在gitlab docker注册表中。

    我正在使用Rancher进行docker图像部署...我非常喜欢Rancher的分布式。即我可以指定一个docker镜像来运行,而rancher负责管理哪个服务器来部署我的容器。

    理想情况下,我希望第6步成为"分发" (即我不想ssh到服务器并运行docker run {imagename})并让一些服务成为部署的权限

    目前有什么类似的东西可以让我实现这个目标吗?

2 个答案:

答案 0 :(得分:1)

至于最后一步,以Rancher为例(许多其他人也提供类似的REST API),你可以让Jenkins调用Rancher API来进行服务升级,前提是你需要将自己的堆栈定义为Rancher定制服务目录。

我也在寻找轻量级解决方案,并乐于了解替代方案。

答案 1 :(得分:0)

实现这一目标的方法有很多种。

最简单的方法之一是使用配置管理工具协调部署新映像。 Ansible是一个不错的选择,但其他人如木偶或厨师也很好。这些工具将让您完全控制必须部署的位置。您可以轻松地滚动更新,而不会中断流量,如example中所述。

另一种方法是依靠集群本身来自动部署服务。这种方法通常称为编排。像kubernetes这样的工具或者最近的码头工具和一些魔法是很好的选择。

作为旁注,后一种方法倾向于微服务架构,似乎更具吸引力,但实际上实现起来更复杂。它对构建集群执行的服务的方式做出了一些假设。然而,第一种方法适用于任何类型的软件。