gpt4 book ai didi

bash - bash脚本在多个docker-compose环境中运行测试

转载 作者:行者123 更新时间:2023-12-02 20:14:54 26 4
gpt4 key购买 nike

需要一些帮助来编写脚本,以自动化在Windows主机上的多个docker-compose环境中运行测试的相当简单的过程。

这是我要自动化的手动过程:

  • 打开docker快速入门终端
  • 设置3个相同的环境:docker-compose -p test1 up -d && docker-compose -p test2 up -d && docker-compose -p test3 up -d
  • 再打开2个docker终端,然后在每个终端上运行以下命令之一:
  • 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

  • 一开始我很困。我可以打开docker机器 shell ,但无法获取它来更改目录以执行步骤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”未执行,导致后续命令失败。

    尝试概括我认为运行该脚本所需的内容,我可以总结如下:
  • 如何在docker shell加载后传递要执行的命令(例如“cd ...”)?
  • 如何从根shell打开多个独立的(docker)shell,并等待它们完成执行命令?

  • 我打算在Windows上为git-bash编写脚本,这是我的偏爱,但也欢迎提供Windows批处理脚本的建议。

    最佳答案

    好吧,最后并不难。相当混乱,我敢肯定它会得到改善,但它确实达到了我想要的效果(最终,我正在运行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}')"

    关于bash - bash脚本在多个docker-compose环境中运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44161780/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com