我如何docker – 没有阻止ci和猜测持续时间组成

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

除了使用Docker的CI(这是一个臭名昭着的IMO),有没有人有如何完成这个build议?

目前我使用:

  - docker-compose up -d - sleep 6 

简单一点:

 - 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 ; 

或者更好地调用一个脚本来更好地格式化(您需要创build一个/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 ; 

/health_check.sh

 #!/bin/bash curl http://localhost:PORT && exit 0 exit 1 

docker-compose ps显示容器的状态,如果一切正常,应该是up。