【发布时间】:2016-04-30 02:06:03
【问题描述】:
我们需要使用 Jenkins 来测试一些各自需要的 web 应用:
- 一个数据库(在我们的例子中是 postgres)
- 一种搜索服务(在我们的例子中是 ElasticSearch,但只是有时)
- 缓存服务器,例如 redis
到目前为止,我们刚刚在 Jenkins 主服务器上运行了这些服务,但是当我们想要升级 Postgres、ES 或 Redis 版本时,这会导致问题。并非所有应用都可以同步移动,我们希望在将应用移动到生产环境之前在新版本上运行测试。
我们想做的是在每个作业运行的基础上提供这些服务,每个服务都在自己的容器中运行。
编排这些容器的最佳方式是什么?
无论作业成功与否,如何启动这些辅助容器并拆除它们?
如何防止端口冲突,例如,一个 Web 应用程序的作业运行中的数据库与另一个 Web 应用程序的作业中的数据库之间的端口冲突?
【问题讨论】:
标签: postgresql elasticsearch jenkins docker redis