我读过类似主题的很多内容; 例如: Docker Compose wait for container X before starting Y等。
所以,我正在尝试实施等待仅使用撰写和健康检查。
我只有一个docker-compose文件。有一个应用程序部分和测试此应用程序。
只有当app(jar,db等)准备就绪时才能执行测试(服务)。 在测试(服务)执行之后,我想通过$?
获取此执行的状态所以我的撰写文件是下一个:
version: "2.1"
networks:
myNetwork:
services:
rabbitmq:
...
networks:
- myNetwork
healthcheck:
test: ["CMD", "rabbitmqctl", "status"]
interval: 100s
timeout: 10s
retries: 10
app:
...
depends_on:
rabbitmq:
condition: service_healthy
networks:
- myNetwork
healthcheck:
test: ["CMD", "wget", "http://localhost:8080/ping"]
interval: 100s
timeout: 10s
retries: 10
tests:
build:
context: .
dockerfile: TestDocker
depends_on:
app:
condition: service_healthy
networks:
- myNetwork
我试图跑:
docker-compose up -d app && docker-compose run tests;
或
docker-compose run tests
但是docker-compose run tests
不等待条件:service_healthy; (app和rabbitmq容器已启动但未检查service_healthy);
这就是问题所在。
当我做这样的事情时:
docker-compose up -d app && sleep 20 && docker-compose run tests;
有没有可能做睡眠或等待命令:docker - compose run tests
?