2017-05-24 79 views
1

需要一些幫助來編寫腳本來自動完成在Windows主機上的多個docker-compose環境中運行測試的相當簡單的過程。bash腳本在多個docker-compose環境中運行測試

這是手動過程,我想自動化:

  1. 打開搬運工快速啓動終端
  2. 設置3個相同的環境中:docker-compose -p test1 up -d && docker-compose -p test2 up -d && docker-compose -p test3 up -d
  3. 打開2個搬運工終端,然後運行的一個在以下各個:
    1. docker-compose-run -p test1 app ./node_modules/gulp/bin/gulp.js cuc-reports
    2. docker-compose-run -p test2 app ./node_modules/gulp/bin/gulp.js cuc-not-reports1
    3. docker-compose-run -p test3 app ./node_modules/gulp/bin/gulp.js cuc-not-reports2
  4. 當所有測試完成後,推倒:docker-compose -p test1 down && docker-compose -p test2 down && docker-compose -p test3 down

我被堵在開始的時候漂亮多了。我可以打開泊塢窗機外殼,但不能讓它改變目錄,以執行步驟2.我試過如下:

#!/bin/bash 
src=$PWD/../../ 
cd "C:\Program Files\Docker Toolbox" 
"C:\Program Files\Git\bin\bash.exe" --login -i "C:\Program Files\Docker Toolbox\start.sh" cd $src && docker-compose -p test1 up -d && docker-compose -p test2 up -d && docker-compose -p test3 up -d 

然而,「CD $ SRC」不執行這將導致後續命令失敗。

試圖概括我想我需要爲了運行此腳本,我會總結如下的事情:我怎樣才能傳遞命令進行一次泊塢窗殼載荷執行(如

  • 「CD ...「)?
  • 如何從根shell打開多個獨立(docker)shell並等待它們完成執行其命令?

我打算在Windows上編寫git-bash的腳本,這是我的首選項,但也歡迎windows批處理腳本的建議。

回答

0

嗯,最後並沒有那麼難。相當混亂,我相信它可以改進,但它做我想要的(最終,我運行2個碼頭環境不是3,因爲它使用4個核心性能更好)。如果有人對我所有這些奇怪的東西感興趣,只要問一下,我會找到一些資源。請記住,此答案適用於Windows:

#!/bin/bash 
cd `dirname $0`/../../ 

start bash -c 'docker-compose -p test1 up -d; sleep 3s; docker exec -i $(docker-compose -p test1 ps ros | grep -m 1 ros | cut -d " " -f1) ./node_modules/gulp/bin/gulp.js cucumber1; docker-compose -p test1 down; bash' 
start bash -c 'docker-compose -p test2 up -d; sleep 3s; docker exec -i $(docker-compose -p test2 ps ros | grep -m 1 ros | cut -d " " -f1) ./node_modules/gulp/bin/gulp.js cucumber2; docker-compose -p test2 down; bash' 
sleep 5s 
start bash -c "docker stats $(docker ps | awk '{if(NR>1) print $NF}')" 
相關問題