【问题标题】:cmd: Open a browser when a string is output using dockercmd:使用docker输出字符串时打开浏览器
【发布时间】:2022-01-06 20:54:56
【问题描述】:

我正在从 cmd(一个 .bat 脚本)内部运行一个 docker 命令。 该命令看起来像 docker run --shm-size=1gb -it --privileged --name test p 8080:8080 -h test thom/test:latest 我想创建一个循环,在调用此命令后等待某个字符串出现,或者等待端口(8080)打开。字符串是“Daemon started!”,输出的时候我要打开浏览器:

explorer "http://localhost:8080"

虽然没有重新启动 docker 命令,但我正在努力批量制作一个 while 循环。这是我目前所拥有的。

:loop
timeout /t 5
(docker run --shm-size=1gb -it --privileged --name test p 8080:8080 -h test thom/test:latest | find "proxy Daemon started!")  > nul 2>&1
if find "proxy Daemon started!" goto loop
echo I can go!
explorer "http://localhost:8080

 

【问题讨论】:

    标签: docker if-statement batch-file cmd while-loop


    【解决方案1】:

    使用findstr 和生成的errorlevel 来相应地执行操作,您还可以使用条件运算符&&||,如第二个示例所示:

    @echo off
    :loop
    timeout /t 5
    (docker run --shm-size=1gb -it --privileged --name test p 8080:8080 -h test thom/test:latest | findstr /R "proxy.*Daemon.*started")>nul 2>&1
    if errorlevel 1 goto :loop
    echo I can go!
    explorer "http://localhost:8080"
    

    或条件运算符用法:

    :loop
    timeout /t 5
    (docker run --shm-size=1gb -it --privileged --name test p 8080:8080 -h test thom/test:latest | findstr /R "proxy.*Daemon.*started")>nul 2>&1 && explorer "http://localhost:8080" || goto :loop
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-29
      • 2012-03-11
      • 2022-08-21
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-02
      相关资源
      最近更新 更多