我们需要使用Jenkins来测试一些各自需要的web应用:
- 一个数据库(在我们的例子中是 postgres)
- 搜索服务(在我们的例子中是 ElasticSearch,但只是有时)
- 一个缓存服务器,比如redis
到目前为止,我们只是在 Jenkins master 上运行了这些服务,但是当我们想要升级 Postgres、ES 或 Redis 版本时,这会导致问题。并非所有应用程序都可以同步移动,我们希望在 promise 将应用程序移至生产环境之前在新版本上运行测试。
我们想要做的是在每个作业运行的基础上提供这些服务,每个服务都在自己的容器中运行。
编排这些容器的最佳方式是什么?
无论作业是否成功,您如何启动和拆除这些辅助容器?
您如何防止端口冲突,例如,一个 Web 应用程序作业运行中的数据库与另一个 Web 应用程序作业中的数据库之间的端口冲突?
最佳答案
检查 docker-compose并为您的测试编写一个 docker-compose 文件。 latest network features Docker(专用网络)将帮助您隔离并行运行的构建。
但是,开始学习 docker-compose 时就好像您同时只有一个构建一样。如果对此有信心,请进一步查找有关网络的高级 docker 文档。
关于postgresql - 使用 Docker 和 Jenkins 管理用于测试的资源(数据库、elasticsearch、redis 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36935316/