现在我们的 Jenkins 代理为我们的每个 Rails 项目生成一个 docker-compose.yml,然后运行 docker-compose up。docker-compose.yml 有一个主“web”容器,其中包含 rbenv 和我们所有其他 Rails 依赖项。它链接到包含测试 Postgres 数据库的数据库容器。
当我们需要实际运行测试并生成退出代码时,问题就来了。仅当测试脚本返回出口 0 时,我们的 CI 服务器才会部署,但 docker-compose 始终返回 0,即使其中一个容器命令失败。
另一个问题是 DB 容器无限期地运行,即使在 Web 容器完成运行测试之后,docker-compose up
也永远不会返回。
有没有办法我们可以在这个过程中使用 docker-compose?我们需要能够运行容器,但在 Web 容器完成后退出并返回它的退出代码。现在,我们使用 docker 手动启动 DB 容器并使用 --link 选项运行 Web 容器。