Docker CD / CI工作stream程的最佳实践是什么?
我对docker worlflow来说是个很新的东西,我想知道docker CD / CI工作stream程的最佳做法是什么……现在大多数文章似乎并没有真正谈论docker的“部署”部分,注册。
我想做的事:
- 进行一些代码更改
- 推到Git
- jenkinsunit testing/ EEtesting
- jenkinsbuild立docker形象
- 在registry中存储docker图像
- 在服务器上运行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的软件。