为什么 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指令用于指定容器启动时执行的命令。这意味着当您使用 workdirbin 目录将不存在,因为 ENTRYPOINT ["test.exe", "-f", "params.txt"] 尚未执行。

你可以看到它好像 ENTRYPOINT 指令是脚本中 运行 的最后一行(这可能是为什么它通常放在 [=15] 末尾的原因=].)

一个RUN指令可以用来做你想做的事情。