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

我对docker worlflow来说是个很新的东西,我想知道docker CD / CI工作stream程的最佳做法是什么……现在大多数文章似乎并没有真正谈论docker的“部署”部分,注册。

我想做的事:

  1. 进行一些代码更改
  2. 推到Git
  3. jenkinsunit testing/ EEtesting
  4. jenkinsbuild立docker形象
  5. 在registry中存储docker图像
  6. 在服务器上运行docker映像。

为了实现步骤1-5,我有下面的堆栈。

用户推送到gitlab – > Gitlab webhook通知jenkins – > jenkins构build项目 – >将图像存储在gitlab dockerregistry中。

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

理想情况下,我想第6步是“分布式”(即我不想ssh到服务器,并运行docker run {imagename} ),并有一些服务是部署的权力

有什么目前这样的事情可以让我做到这一点?

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

我也在寻找轻量级的解决scheme,并乐于知道替代品。

有很多不同的方法来实现这一点。

最简单的一个就是使用configurationpipe理工具来编排新映像的部署。 Ansible是一个不错的select,但其他像木偶或厨师也好。 这些工具将使您完全掌握必须在哪里部署的内容。 您可以轻松地进行更新,而不会中断任何stream量,如本例中所述 。

另一种方法是依靠集群本身来自动部署服务。 这种方法通常被称为编舞。 像kubernetes或最近的docker群与一些魔术工具是不错的select。

作为一个侧面说明,后面的方法倾向于微服务架构,似乎更吸引人,但实际上更复杂。 它在集群执行服务的方式上做了一些假设。 然而,第一种方法将适用于任何types的软件。