如果依赖容器完成后如何让服务容器退出?
我在app_unittestbot容器中运行测试套件,该容器依赖于在单独容器中运行的postgresql数据库服务器(postgres:9.5-alpine)。一旦测试套件退出,我想检查测试套件的返回代码并暂停数据库容器。使用下面的docker-compose.yml,db服务容器永远不会停止。
version: '2.1'
services:
app_postgresql95:
build: ./postgresql95/
ports:
- 54321:5432
app_unittestbot:
command: /root/wait-for-it.sh app_postgresql95:5432 --timeout=60 -- nose2 tests
build: ./unittestbot/
links:
- app_postgresql95
volumes:
- /app/src:/src
depends_on:
- 'app_postgresql95'
答案 0 :(得分:2)
如果其中任何一个容器退出,您可以运行docker-compose up --abort-on-container-exit
来组合停止所有容器。这可能会解决您的使用案例。
对于一些更有弹性的东西,我可能会把它分成两个组合文件,这样postgresql上的中止不会被意外注册为成功的测试。然后你只需按照你需要的顺序运行这些文件:
docker-compose -f docker-compose.yml up -d
docker-compose -f docker-compose.test.yml up
docker-compose -f docker-compose.yml down