docker-compose在测试后退出depends_on服务

时间:2017-06-09 16:07:22

标签: postgresql unit-testing docker docker-compose

如果依赖容器完成后如何让服务容器退出?

我在app_unittestbot容器中运行测试套件,该容器依赖于在单独容器中运行的postgresql数据库服务器(postgres:9.5-alpine)。一旦测试套件退出,我想检查测试套件的返回代码并暂停数据库容器。使用下面的docker-compose.yml,db服务容器永远不会停止。

搬运工-compose.yml

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'

1 个答案:

答案 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