[英]Docker-compose run service if another service status is 0 (success)
我对Docker和Docker Compose非常陌生。
我想使用docker compose来测试我的项目,并在测试正常的情况下发布它。 如果测试失败,则完全不应发布该应用程序。
这是我的docker-compose.yml
version: '3'
services:
mongodb:
image: mongo
test:
build:
context: .
dockerfile: Dockerfile.tests
links:
- mongodb
publish:
build:
context: .
dockerfile: Dockerfile.publish
?? # I want to say here that publish step is dependent to test.
之后,在我的testAndPublish.sh
文件中,我想说:
docker-compose up
if [ $? = 0 ]; then # If all the services succeed
....
else
....
fi
因此,如果测试或发布步骤失败,那么我将不进行推送。
如何在docker-compose中构建类似于流程的步骤? 谢谢。
我认为您正在尝试使用docker-compose
做所有事情,这是错误的方法。
对于CI(fe Travis或CircleCI),我的工作流程始终如下:
web
节点和一个database
节点 install
步骤的travis.yml
或circle.yml
中,我总是将诸如fe docker-compose run web npm install
和其他内容 test
步骤中,我将放置docker-compose run web npm test
或类似docker-compose run web my-test-script.sh
,通过这种方式,您将知道测试将在声明的docker环境中运行失败,此步骤失败,并且配置项中的整个测试步骤失败,这是期望的 deploy
步骤中,我将运行一些deploy.sh
脚本,该脚本将从Dockerfile( web
使用的镜像)构建映像并将其推送到Docker Hub。 这样,您的CI测试例程仍取决于特定的Docker环境,但是部署推送(不需要Docker)与应用程序分开保存,这使它更加方便。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.