首页 > 解决方案 > 为什么 Windows Docker 容器不等待 exe 完成安装?

问题描述

我正在编写一个 Dockerfile 来在 Windows Server 2019 上安装一个 exe,然后运行安装的程序。

在 Dockerfile 中,我调用ENTRYPOINT ["test.exe", "-f", "params.txt"]后跟WORKDIR "C:\Program Files\TestInstall\bin",但由于尚未创建文件夹,因此WORKDIR无法执行。bin我已经通过dir在命令之间运行 a in 检查TestInstall目录中的内容来确认这一点,并且每次都bin还没有创建文件夹。但是,如果我在容器退出后打开一个 shell 会话,该bin文件夹就会在那里。

有没有办法让它在运行之前等待 exe 完成安装WORKDIR,还是取决于 exe 如何执行安装?

标签: dockerdockerfiledocker-for-windows

解决方案


ENTRYPOINT指令用于指定容器启动时将执行的命令。这意味着bin当您使用时该目录将不存在workdir,因为ENTRYPOINT ["test.exe", "-f", "params.txt"]尚未执行。

您可以将其视为ENTRYPOINT指令是脚本中将运行的最后一行(这可能是它通常放在 . 末尾的原因Dockerfile

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


推荐阅读