当前在travis-ci中,我必须使用 -d
运行docker-compose,以免它阻止构建过程。不幸的是,这意味着我需要某种方法来确保我的容器在进行测试之前在操作中运行。我发现这样做的最好方法是使用sleep
。
除了使用Docker's CI(臭名昭著的IMO(外,还有人对如何完成此操作有任何建议吗?
目前我使用:
- 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 ;
或更好地调用这样做更好格式的脚本(您需要创建/health-check.sh.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
显示了容器的状态,如果一切顺利,都应该升起。