Docker-如果另一个服务状态为0(成功),则组成运行服务
Docker-compose run service if another service status is 0 (success)
我对 Docker 和 Docker 撰写还很陌生。
我想使用 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(f.e。Travis 或 CircleCI)时,我的工作流程总是如下:
- 假设您有一个
web
节点和 database
个节点
- 在
travis.yml
或 circle.yml
中的 install
步骤中,我总是放 f.e 之类的东西。 docker-compose run web npm install
和其他人
- 在
test
步骤我会放置 docker-compose run web npm test
或类似 docker-compose run web my-test-script.sh
的东西,这样你就会知道测试将 运行 在声明的 docker 环境,如果他们失败,则此步骤失败并且 CI 中的整个测试步骤失败,这是期望的
- 在
deploy
步骤我会 运行 一些 deploy.sh
脚本,它将从 Docker 文件(web
使用的文件)构建图像并将其推送到 Docker Hub.
这样你的 CI 测试例程仍然依赖于特定的 Docker 环境,但部署推送(不需要 Docker)与应用程序分开保存更方便恕我直言。
我对 Docker 和 Docker 撰写还很陌生。
我想使用 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(f.e。Travis 或 CircleCI)时,我的工作流程总是如下:
- 假设您有一个
web
节点和database
个节点 - 在
travis.yml
或circle.yml
中的install
步骤中,我总是放 f.e 之类的东西。docker-compose run web npm install
和其他人 - 在
test
步骤我会放置docker-compose run web npm test
或类似docker-compose run web my-test-script.sh
的东西,这样你就会知道测试将 运行 在声明的 docker 环境,如果他们失败,则此步骤失败并且 CI 中的整个测试步骤失败,这是期望的 - 在
deploy
步骤我会 运行 一些deploy.sh
脚本,它将从 Docker 文件(web
使用的文件)构建图像并将其推送到 Docker Hub.
这样你的 CI 测试例程仍然依赖于特定的 Docker 环境,但部署推送(不需要 Docker)与应用程序分开保存更方便恕我直言。