现在,我们的Jenkins代理为我们的每个Rails项目生成一个docker-compose.yml,然后运行docker-compose。docker-compose.yml具有一个主要的“ Web”容器,其中包含rbenv和我们所有其他的Rails依赖项。它链接到包含测试Postgres DB的数据库容器。
问题出在我们需要实际运行测试并生成退出代码时。仅当测试脚本返回exit 0时,我们的CI服务器才会部署,但是docker-compose始终返回0,即使其中一个容器命令失败。
另一个问题是,即使Web容器完成了运行测试之后,DB容器也会无限期地运行,因此docker-compose up
永远不会返回。
有什么方法可以在此过程中使用docker-compose吗?我们将需要能够运行容器,但是在Web容器完成后退出并返回其退出代码。现在,我们使用docker手动启动数据库容器,并使用--link选项运行Web容器。
docker-compose
1.12.0及更高版本,那应该是正确的方法。也许也是你的情况。一个示例可能是:docker-compose up --exit-code-from test-unit
。请注意,直到我set -e
在脚本开始处添加a之前,它对我而言均无效。