需要一些帮助编写脚本来自动执行在Windows主机上的几个docker-compose环境中运行测试的相当简单的过程。
这是我想要自动化的手动过程:
docker-compose -p test1 up -d && docker-compose -p test2 up -d && docker-compose -p test3 up -d
docker-compose-run -p test1 app ./node_modules/gulp/bin/gulp.js cuc-reports
docker-compose-run -p test2 app ./node_modules/gulp/bin/gulp.js cuc-not-reports1
docker-compose-run -p test3 app ./node_modules/gulp/bin/gulp.js cuc-not-reports2
docker-compose -p test1 down && docker-compose -p test2 down && docker-compose -p test3 down
#!/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”未执行,导致后续命令失败。
尝试概括我认为运行此脚本所需的内容,我可以总结如下:
我打算在Windows上编写git-bash的脚本,这是我的偏好,但也欢迎提出Windows批处理脚本的建议。
答案 0 :(得分:0)
嗯,最后它并不是那么难。相当混乱,我确信它可以改进,但它做了我想要的(最终我运行2个docker环境而不是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}')"