gpt4 book ai didi

Docker 撰写 : Stop "depends_on" service when "parent" finishes

转载 作者:行者123 更新时间:2023-12-02 20:33:51 25 4
gpt4 key购买 nike

在父服务测试完成后,不使用 --abort-on-container-exit 是否可以告诉 docker compose 终止 depends_on 数组上指定的服务?

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

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-backenddb 服务作为依赖项启动,运行其测试,然后退出,并且 db 永远不会完成。

使用 --abort-on-container-exit 不是一个选项,因为与 spa 相关的服务可能会在 test-backend 结束之前退出.

最佳答案

我不相信这是 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

关于Docker 撰写 : Stop "depends_on" service when "parent" finishes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51270971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com