如何在不阻塞ci和猜测持续时间的情况下编写docker

如何在不阻塞ci和猜测持续时间的情况下编写docker,docker,Docker,目前在Travis CI中,我必须使用-d运行docker compose,这样它就不会阻止构建过程。不幸的是,这意味着在继续测试之前,我需要一些方法来确保我的容器是可操作的。我发现最好的方法就是使用sleep 除了使用Docker的CI(这在国际海事组织很臭),还有人对如何实现这一点有什么建议吗 目前我使用: - docker-compose up -d - sleep 6 docker compose ps显示容器的状态,如果一切正常,则容器应处于启动状态。简单一点: - dock

目前在Travis CI中,我必须使用
-d
运行docker compose,这样它就不会阻止构建过程。不幸的是,这意味着在继续测试之前,我需要一些方法来确保我的容器是可操作的。我发现最好的方法就是使用
sleep

除了使用Docker的CI(这在国际海事组织很臭),还有人对如何实现这一点有什么建议吗

目前我使用:

  - docker-compose up -d
  - sleep 6

docker compose ps
显示容器的状态,如果一切正常,则容器应处于启动状态。

简单一点:

- docker-compose up -d
- while true; do echo Checking...; echo $(docker-compose exec service_name test-command something) | grep -q some-output && break; sleep 0.5; done ; 
或者最好调用一个脚本,该脚本的格式更好(您需要创建一个/health check.sh):

/health_check.sh:

- docker-compose up -d
- while true; do echo Checking...; (docker-compose exec service_name /health-check.sh) && break; sleep 0.5; done ; 
#!/bin/bash

curl http://localhost:PORT && exit 0
exit 1