繁体   English   中英

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

[英]What is the best practice for Docker CD/CI workflow?

我对docker worlflow还是很陌生,我想知道对docker CD / CI工作流采取的最佳做法是什么...目前,大多数文章似乎并未真正谈论docker的“部署”部分,仅注册。

我想做的事:

  1. 进行一些代码更改
  2. 推到Git
  3. 詹金斯单元测试/ EE测试
  4. Jenkins构建Docker映像
  5. 将Docker映像存储在注册表中
  6. 在服务器上运行docker image

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

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

我正在使用Rancher进行Docker映像部署...我真的很喜欢Rancher的分布式性。 也就是说,我可以指定要运行的docker映像,而rancher负责部署容器的服务器。

理想情况下,我希望步骤6是“分布式的”(即,我不想ssh进入服务器并运行docker run {imagename} ),并拥有某些服务来进行部署

目前有什么可以让我实现的目标吗?

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

我也在寻找轻量级的解决方案,并且很高兴知道替代方案。

有很多不同的方法可以实现这一目标。

最简单的方法之一是使用配置管理工具来协调新映像的部署。 Ansible是一个不错的选择,但是其他人像木偶或厨师也可以。 这些工具将使您完全控制必须部署在何处的内容。 如本示例所述,您可以轻松滚动更新而不会造成任何流量中断。

另一种方法是依靠群集本身来自动部署服务。 这种方法通常称为编排。 诸如kubernetes之类的工具或最近带有一些魔术的docker swarm都是不错的选择。

顺便提一下,后一种方法趋向于微服务体系结构,似乎更有吸引力,但实现起来实际上更复杂。 它对集群执行的服务的构建方式进行了一些假设。 但是,第一种方法将适合任何类型的软件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM