0

我对Docker和Docker组合很新颖。Docker-compose运行服务,如果另一个服务状态为0(成功)

我想用docker compose来测试我的项目并发布它,如果测试没问题的话。如果测试失败,它不应该发布应用程序。

这里是我的搬运工,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中构建类似流程的步骤? 谢谢。

回答

0

我认为你正在试图用docker-compose做任何事情,这是错误的。

当涉及到CI(FE特拉维斯或CircleCI)我总是让我的工作流程如下:

  • 假设你有一个web节点和database节点
  • travis.ymlcircle.ymlinstall步我总是把东西像fe docker-compose run web npm install和其他
  • test一步,我会把docker-compose run web npm test或类似的东西一样docker-compose run web my-test-script.sh,这样,你就会知道,测试将在宣布泊坞窗环境中运行,如果他们失败,这一步失败,并在整个测试步骤CI失败其期望
  • deploy步骤I将运行一些deploy.sh脚本将建立从Dockerfile图像(即web用途之一),并推动它以例如泊坞集线器。

这样你的CI测试程序仍取决于具体的环境码头工人,但部署推动(这并不需要多克)由这使得它更方便易恕我直言,该应用程序分开存放。

+0

谢谢,我将通过sh文件管理步骤。 – skynyrd