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

相關問題