我想为我的产品设置一个单元测试环境。我在 Lua 的 nginx 上构建了一个使用 mysql 和 redis 的 Web 应用程序。 虽然我是 docker 新手,但我认为 docker 会对此有好处。我的应用程序在 centos 服务器(生产服务器)上运行。
我打算为 mysql、redis 和 webapp 设置不同的容器,然后在我的 mac(我的开发机器是 MAC)或 VM 中编写 UT 应用程序(使用 Busted 框架的 Lua 单元测试)来测试它。 UT 应用程序将与 docker 容器 nginx 通信,而 nginx 将使用容器 mysql 和 redis。这个好吗 ?如果是的话,有人可以指导我如何做到这一点吗?也许一些好的链接?如果没有,还有什么更好的方法。我已经尝试过使用 vagrant,但这花费了太多时间,这不应该在我的 UT 案例中。
最佳答案
有关我们如何设置项目模板的示例,您可以查看 phundament/app
及其测试设置。
我们使用的是 dockerized GitLab使用 customized runner 安装, 可以执行 docker-compose
.
Note! The runner itself is running on a separate Docker host.
我们使用 docker-compose.yml
来定义 services在带有 development 调整的堆栈中和 testing .
CI configuration已针对处理隔离堆栈的多个并发测试进行了优化,这只需通过指定自定义 COMPOSE_PROJECT_NAME
来完成。
一些关于我们测试过程的深入文档以及关于 docker-compose
和 dockerized CI 的有用信息。
- #testing README
- #testing Docs
- CI builds
- Extending services and Compose files
- Docker-in-Docker for CI?
最后,Travis CI也支持 Docker 有一段时间了,但我根本没有测试过这种方法。
关于unit-testing - docker单元测试设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34434579/