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