使用Docker Hub for CI / CD的最佳实践
预计阅读时间:3分钟
根据2020 Jetbrains开发人员调查,如今有44%的开发人员正在使用某种形式的持续集成和与Docker容器的部署。我们了解到,许多开发人员已将Docker Hub用作其工作流一部分的容器注册表来进行此设置。本指南包含一些最佳实践,并提供了入门指南。
我们还听到了反馈,鉴于Docker引入的与网络出口有关的更改以及免费用户的拉动次数,围绕将Docker Hub用作CI / CD工作流的一部分而没有达到这些限制的最佳方法存在疑问。本指南涵盖了最佳实践,这些最佳实践可以改善您的体验,并合理地使用Docker Hub,以减轻达到这些限制的风险,并包含有关如何根据用例增加限制的技巧。
内圈和外圈
首先,使用Docker和任何CI / CD时最重要的事情之一就是了解何时需要使用CI进行测试以及何时可以在本地进行测试。在Docker上,我们考虑开发人员如何在内部循环(代码,构建,运行,测试)和外部循环(推送更改,CI构建,CI测试,部署)方面进行工作。
在考虑优化CI / CD之前,重要的是要考虑内部循环以及它与外部循环(CI)的关系。我们知道,大多数用户不喜欢“通过CI进行调试”。因此,最好使您的内循环和外循环尽可能相似。我们建议您docker build
通过在Dockerfile中添加针对它们的目标来运行单元测试作为命令的一部分。这样,在进行更改和本地重建时,可以使用简单的命令运行与在本地计算机上的CI中运行的单元测试相同的单元测试。
博客文章使用Docker进行开发是一个很好的示例,说明了如何在Docker项目中使用测试并在CI中重新使用它们。这也可以缩短问题反馈周期,减少拉动次数,并构建您的CI需要做的事情。
优化CI / CD部署
一旦进入实际的外部循环和Docker Hub,您可以做一些事情以充分利用CI并提供最快的Docker体验。
首先,要确保安全。设置CI时,请确保您使用的是Docker Hub访问令牌,而不是密码。
笔记
您可以从 Docker Hub的“安全性”页面创建新的访问令牌。
创建访问令牌并将其添加到平台上的秘密存储区后,您需要考虑何时进行插入和插入CI / CD,以及从何处插入CI / CD,具体取决于所做的更改。
减少构建时间并减少调用次数的第一件事是利用构建缓存重用您已经提取的层。您可以通过使用buildX(buildkits)缓存功能以及平台提供的任何缓存在许多平台上执行此操作。例如,请参阅使用构建缓存优化GitHub Actions工作流。
您可能要进行的另一项更改是仅将发布映像转到Docker Hub。这意味着要设置功能以将您的PR图像推送到更本地的图像存储区以进行快速提取和测试,而不是将其一直推广到生产环境。
下一步
我们知道有更多在CI中使用Docker的技巧和窍门,但是,考虑到最近的Docker Hub速率限制更新,我们认为这些是一些重要的事情。
笔记
如果您在通过身份验证后仍遇到拉出限制问题,则可以考虑升级到Pro或Team帐户。
有关如何配置GitHub Actions CI / CD管道的信息,请参阅“配置GitHub Actions”。
CI / CD,GitHub操作