0

我对docker worlflow很新颖,我想知道docker CD/CI工作流程的最佳做法是什么......现在大部分文章似乎都没有真正谈论docker的“部署”部分,只有注册。Docker CD/CI工作流程的最佳实践是什么?

我想要做什么:

  1. 代码做一些更改
  2. 推到Git的
  3. 詹金斯单元测试/ EE测试
  4. 詹金斯建立泊坞窗图像中的注册表
  5. 商店码头工人形象
  6. 在服务器上运行docker映像。

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

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

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

理想我想步骤#6被“分配”(即我不想ssh登录到服务器并运行docker run {imagename}),并有一些服务是部署

权威是有像目前任何会让我做到这一点?

回答

0

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

其中最简单的一种就是使用配置管理工具协调部署新镜像。 Ansible是一个不错的选择,但其他像木偶或厨师也很好。这些工具将使您完全掌握必须在哪里部署的内容。您可以轻松实现更新,而不会中断任何流量,如example中所述。

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

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

+0

如果使用kubernetes,流量会是多少? 是否有任何类型的自动部署图像的“呼叫”? – nate

+0

我不知道kubernetes足以提供一个答案,但是,使用docker你可以使用内置的[scheduler](https://docs.docker.com/engine/swarm/swarm-tutorial/rolling-update/ )和定期调用“docker service update”的cron作业。您也可以从CI服务器调用[REST端点](https://docs.docker.com/engine/reference/api/docker_remote_api_v1.24/)服务/名称/更新。 –

1

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

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