如何使用.bat文件运行pass docker terminal命令

时间:2017-08-21 20:03:13

标签: batch-file docker

我想使用bat文件调用docker compose。我尝试使用以下命令调用但不执行命令。 这是我的.bat文件

echo on
cd C:\Program Files\Docker Toolbox\
start start.sh cd desktop 
cd test
docker-compose up

有没有其他方法可以使用bat file.or任何其他文件执行docker命令。

3 个答案:

答案 0 :(得分:3)

批处理文件是一个脚本文件。脚本需要一个解释器。对于批处理文件,解释程序是cmd.exe - Windows命令解释程序。

A * .sh文件也是需要解释器的脚本。解释器位于Unix / Linux系统shbashksh,...也是可执行文件,但没有文件扩展名.exe,因为在Unix / Linux上可执行文件通常会执行没有文件扩展名。

在Windows上,默认情况下没有为Unix / Linux shell脚本安装解释器。如果start start.sh完全起作用,而不是因为在Windows上安装了一个shell解释器,该解释器已在Windows注册表中注册为打开* .sh文件的应用程序,这意味着通过启动的应用程序解释shell脚本文件中的命令。

但由cmd.exe解释并在Windows命令环境中执行的批处理脚本中的命令无法在shell解释器的shell环境中执行。

start start.sh启动一个与为执行批处理文件而创建的Windows命令进程并行运行的新进程。批处理文件处理在此行之后立即继续执行命令进程中的下一个命令,而shell解释程序进程并行解释start.sh中的命令。

所以你需要的是一个批处理文件,它创建一个shell脚本来调用start.sh并通过shell解释器在shell环境中执行其他shell命令。

下面的批处理代码可能有效。它没有经过我测试,因为我没有 Docker Toolbox ,也没有在我的Windows机器上安装任何shell解释器。

@echo off
set "ShellScriptFile=%TEMP%\%~n0.sh"
(   echo start.sh
    echo cd desktop/test
    echo docker-compose up
) >"%ShellScriptFile%"
start "Docker Compose" /D"%ProgramFiles%\Docker Toolbox" /wait "%ShellScriptFile%"
del "%ShellScriptFile%"
set "ShellScriptFile="

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • call /? ...解释%~n0(没有文件扩展名和路径的批处理文件的名称)
  • del /?
  • echo /?
  • set /?
  • start /?

另请阅读Microsoft有关Using Command Redirection Operators的文章,了解此处使用的重定向运算符>的说明,以创建用3行执行的shell脚本:

start.sh
cd desktop/test
docker-compose up

这3行由shell脚本解释器在shell环境中执行。

答案 1 :(得分:0)

要通过bat文件运行docker-compose,
1.创建一个bat文件,例如run-docker-compose-up.bat

cd c:\docker
docker-compose up -d
pause

c:\docker是我放置docker-compose.yml
的地方 -d在后​​台docker compose up docs中运行容器

  1. docker-compose必须以管理员身份运行。
    虽然无法将bat文件本身标记为以管理员身份运行,但是您可以
    • 右键单击bat文件,然后选择“以管理员身份运行”
    • 或创建bat文件的快捷方式,并将其标记为以管理员身份运行
      (右键单击快捷方式,选择“属性”,选择“高级”,选择“以管理员身份运行”)

答案 2 :(得分:0)

当我解决此问题时,在 docker-compose情况下

  1. 转到您的 docker-compose.yml文件夹

  2. 然后,使用记事本(或其他)创建一个批处理文件,例如:mydockerbatchfile.bat

  3. 在此文件上,键入您的docker命令序列”,例如:

    echo on
    docker-compose down
    docker container prune --force
    docker system prune --volumes --force
    docker image rm xxx/web-api
    docker system df
    docker image ls
    pause
    

OBS:Commando 暂停将允许您在屏幕上检查结果的执行情况

  1. 保存->确保以批处理格式/扩展名保存(mydockerbatchfile .bat
  2. 在您的 Windows桌面中,为'item 3批处理文件'创建一个 快捷方式 (此处- 请勿 将快捷方式设置为“以管理员身份运行”)