gol*_*das 6 docker dockerfile docker-compose
depends_on在父服务测试完成后不使用,是否可以告诉 docker compose 终止阵列上指定的服务--abort-on-container-exit?
我正在尝试构建一个从多个应用程序运行测试的 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
Run Code Online (Sandbox Code Playgroud)
问题是作为依赖项test-backend启动db服务,运行其测试,退出并db永远不会完成。
使用--abort-on-container-exit不是一种选择,因为spa相关服务可能会在test-backend结束之前退出。
我不相信这是 docker-compose 的内置功能。但您可以轻松编写解决方案,例如:
docker-compose up -d db
docker-compose up test-backend
docker-compose down db
Run Code Online (Sandbox Code Playgroud)
在 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1832 次 |
| 最近记录: |