Docker Compose:“父级”完成时停止“ depends_on”服务

时间:2018-07-10 17:19:02

标签: docker docker-compose dockerfile

在父服务测试完成后不使用$query = new \WP_Query([ ... 's' => $term, 'meta_query' => array( array( 'key' => 'foo_listing_syndication', 'value' => $term, 'compare' => '=', ), ), ]); 的情况下,是否可以告诉docker compose杀死depends_on数组上指定的服务?

我正在尝试构建一个可以从多个应用程序运行测试的docker文件,例如:

--abort-on-container-exit

问题是services: test-spa: build: context: ./spa dockerfile: Dockerfile.test command: ["yarn", "run", "test", "--watch", "false"] lint: build: context: ./spa dockerfile: Dockerfile.test command: ["yarn", "run", "lint"] build: build: context: ./spa dockerfile: Dockerfile.test command: ["yarn", "run", "build", "--prod"] test-backend: build: context: ./backend dockerfile: Dockerfile.dev entrypoint: [scripts/entrypoint.sh] command: bundle exec rails test depends_on: - db db: image: postgres 作为依赖项启动test-backend服务,运行其测试,退出并且db从未完成。

不能选择使用db,因为与--abort-on-container-exit相关的服务可能会在spa结束之前退出。

1 个答案:

答案 0 :(得分:1)

我不认为这是docker-compose的内置功能。但是您可以轻松编写解决方案的脚本,例如:

docker-compose up -d db
docker-compose up test-backend
docker-compose down db

在docker-compose之外,还有docker container wait命令,可让您挂起直到容器退出。您可以使用docker container ls查找容器名称,并在标签或其他唯一值上进行过滤,或者可以依赖于compose($project_$service_$replica)中可预测的容器名称。 docker container wait命令可让您以分离状态启动整个项目,然后等待一个容器退出后再继续停止它,例如:

docker-compose up -d
docker container wait $(basename $(pwd))_test-backend_1
docker-compose down db