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

问题描述 投票:0回答:2

我对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} ),并拥有某些服务来进行部署

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

git jenkins docker continuous-integration continuous-deployment
2个回答
1
投票

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

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


0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.