为什么 Windows Docker 容器不等待 exe 安装完成?
Why does Windows Docker container not wait for exe to finish installing?
我正在编写一个 Dockerfile 以在 Windows Server 2019 上安装一个 exe,然后 运行 安装程序。
在 Dockerfile 中,我调用 ENTRYPOINT ["test.exe", "-f", "params.txt"]
,然后调用 WORKDIR "C:\Program Files\TestInstall\bin"
,但是 WORKDIR
执行失败,因为 bin
文件夹尚未创建。我已经通过 运行 在命令之间使用 dir
来确认这一点,以检查 TestInstall
目录中的内容,并且每次都没有创建 bin
文件夹.但是,如果我在容器退出后打开一个 shell 会话,bin
文件夹将在那里。
有没有办法让它在运行安装WORKDIR
之前等待 exe 完成安装,还是取决于 exe 如何执行安装?
ENTRYPOINT
指令用于指定容器启动时执行的命令。这意味着当您使用 workdir
时 bin
目录将不存在,因为 ENTRYPOINT ["test.exe", "-f", "params.txt"]
尚未执行。
你可以看到它好像 ENTRYPOINT
指令是脚本中 运行 的最后一行(这可能是为什么它通常放在 [=15] 末尾的原因=].)
一个RUN
指令可以用来做你想做的事情。
我正在编写一个 Dockerfile 以在 Windows Server 2019 上安装一个 exe,然后 运行 安装程序。
在 Dockerfile 中,我调用 ENTRYPOINT ["test.exe", "-f", "params.txt"]
,然后调用 WORKDIR "C:\Program Files\TestInstall\bin"
,但是 WORKDIR
执行失败,因为 bin
文件夹尚未创建。我已经通过 运行 在命令之间使用 dir
来确认这一点,以检查 TestInstall
目录中的内容,并且每次都没有创建 bin
文件夹.但是,如果我在容器退出后打开一个 shell 会话,bin
文件夹将在那里。
有没有办法让它在运行安装WORKDIR
之前等待 exe 完成安装,还是取决于 exe 如何执行安装?
ENTRYPOINT
指令用于指定容器启动时执行的命令。这意味着当您使用 workdir
时 bin
目录将不存在,因为 ENTRYPOINT ["test.exe", "-f", "params.txt"]
尚未执行。
你可以看到它好像 ENTRYPOINT
指令是脚本中 运行 的最后一行(这可能是为什么它通常放在 [=15] 末尾的原因=].)
一个RUN
指令可以用来做你想做的事情。