如果另一个服务状态为0(成功),Docker compose将运行服务
我对Docker和Docker compose很陌生 我想使用docker compose来测试我的项目,如果测试正常,就发布它。如果测试失败,它根本不应该发布应用程序 这是我的docker-compose.yml如果另一个服务状态为0(成功),Docker compose将运行服务,docker,continuous-integration,docker-compose,dockerfile,build-automation,Docker,Continuous Integration,Docker Compose,Dockerfile,Build Automation,我对Docker和Docker compose很陌生 我想使用docker compose来测试我的项目,如果测试正常,就发布它。如果测试失败,它根本不应该发布应用程序 这是我的docker-compose.yml version: '3' services: mongodb: image: mongo test: build: context: . dockerfile: Dockerfile.tests links:
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(f.e.Travis或CircleCI)时,我总是按照以下方式制定工作流程:
- 假设您有一个
节点和web
节点database
- 在
或travis.yml
的circle.yml
步骤中,我总是把f.e.install
等东西放在上面docker compose运行web npm install
- 在
步骤中,我将放置test
或类似的docker compose run web npm test
,这样您就知道测试将在声明的docker环境中运行,如果测试失败,则此步骤失败,并且CI中的整个测试步骤失败,这是所需的docker compose run web my test script.sh
- 在
步骤中,我将运行一些deploy
脚本,该脚本将从Dockerfile(web使用的文件)构建映像,并将其推送到Docker Hubdeploy.sh