我正在使用以下 docker-compose 文件来运行 3 个项目。
它们都在同一个解决方案中,因此使用相同的 docker 文件。 我想确保测试项目只有在迁移项目成功完成后才能运行。如何向 docker compose 文件中的控制台应用程序 (myserver-migrations) 添加运行状况检查? 现在我只是添加了
depends_on:
- myserver-migration
但这并不能保证迁移成功。有没有办法在控制台应用程序中设置一些状态并在另一个(单元测试)容器中读取它?
services:
myserver:
container_name: myserver
ports:
- "3434:80"
build:
context: .
dockerfile: Dockerfile
target: test
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/health"]
interval: 20s
timeout: 20s
retries: 1
depends_on:
postgres:
condition: service_healthy
myserver-migration:
container_name: myserver-migration
build:
context: .
dockerfile: Dockerfile
target: build
depends_on:
postgres:
condition: service_healthy
myserver:
condition: service_healthy
command: 'dotnet run -p MyServer.Migrations resetdb true'
myserver-tests:
container_name: myserver-tests
build:
context: .
dockerfile: Dockerfile
target: build
depends_on:
- myserver-migration
command: 'dotnet test MyServer.sln'
答案 0 :(得分:0)
通过在条件中使用 service_completed_successfully
标志修复了该问题。
myserver-tests:
container_name: myserver-tests
build:
context: .
dockerfile: Dockerfile
target: build
depends_on:
myserver-migration:
condition: service_completed_successfully
service_completed_successfully
确保依赖容器的退出代码为 0。所以我修改了控制台应用程序,如果一切按计划执行,则返回 0。