docker - 在做 CI 运行测试时,我应该使用 production docker build 吗?

标签 docker testing continuous-integration automated-tests composer-php

运行测试时是否应该复制生产环境(docker 镜像、依赖项等)?

问题是因为如果我正在复制生产环境,我如何获得像 phpunit 和 phpstan 这样的 Composer 开发包?

这方面的最佳做法是什么?

最佳答案

Should I replicate the production environment (docker image, dependencies, etc) when running tests?

对此的直接回答是肯定的。通过在测试环境中复制生产环境意味着您可以限制仅在一个特定环境中发生的问题在生产中困扰您。

话虽如此,但很多时候让您的测试环境与生产环境完全相同是不合适的。例如。对于 Web 服务,您不能(轻松地)在 CI 中针对生产域名运行测试。

Docker 使您可以更轻松地在 SDLC 的其他部分使用生产环境,例如开发和 CI。我建议让您的生产环境的 docker 镜像对项目中的所有工作人员(开发人员、QA 等)可用。会有一些示例,人们想要离开生产 docker 镜像,例如,安装应该无法投入生产。

总而言之,在测试/开发环境中使用生产 docker 镜像(和依赖项)将使您对产品在生产中的表现更有信心。这将减少您的上市时间和生产中的环境问题。

关于docker - 在做 CI 运行测试时,我应该使用 production docker build 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57187013/

相关文章:

docker - 如何防止 docker 容器访问我的本地网络

bash - 当 docker 以 PID 1 运行时,为什么我不能在 docker 中 CTRL-C sleep 无穷大

android - 类型错误 : _init_() takes at least 3 arguments (2 given) MonkeyRunner

javascript - Jest 的 `it.each()` 描述以在称为 $predicate 时呈现箭头函数源代码

android - 如何从 Jenkins/Hudson 上传 APK 到 Play 商店?

windows - 来自CMD命令提示符的Docker错误:运行SSH命令时出现问题

php - Docker上的Nginx默认页面

continuous-integration - Jenkins/Hudson 上游作业未获得下游作业的状态 "ball"颜色

Django 重定向状态代码错误

git - Jenkins CI/CD - 将 Jenkinsfile 保存在我想要构建的单独存储库中