我想使用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命令。
答案 0 :(得分:3)
批处理文件是一个脚本文件。脚本需要一个解释器。对于批处理文件,解释程序是cmd.exe
- Windows命令解释程序。
A * .sh文件也是需要解释器的脚本。解释器位于Unix / Linux系统sh
,bash
,ksh
,...也是可执行文件,但没有文件扩展名.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中运行容器
答案 2 :(得分:0)
当我解决此问题时,在 docker-compose情况下:
转到您的 docker-compose.yml文件夹
然后,使用记事本(或其他)创建一个批处理文件,例如:mydockerbatchfile.bat
在此文件上,键入您的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 暂停将允许您在屏幕上检查结果的执行情况