docker - 为什么 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 如何执行安装?
解决方案
该ENTRYPOINT
指令用于指定容器启动时将执行的命令。这意味着bin
当您使用时该目录将不存在workdir
,因为ENTRYPOINT ["test.exe", "-f", "params.txt"]
尚未执行。
您可以将其视为ENTRYPOINT
指令是脚本中将运行的最后一行(这可能是它通常放在 . 末尾的原因Dockerfile
)
一条RUN
指令可以用来做你想做的事。
推荐阅读
- pagination - 我们可以在 Angular 中使用 MatPaginator 而不使用 MatTableDataSource/
? - java - 运行代码和调试时出现意外行为
- google-analytics - 有没有办法将谷歌播放数据连接到元数据库?
- sql - 如何优化 Sum SQL 查询?
- tableau-api - 如何在一个图表中获得三个度量?
- php - 如何查找字符串变量并与数组进行比较?
- sql-server - SQL Server 数据库错误和已知信息
- android - onLongPress 和 onShowPress 的区别
- c++ - c ++选择排序在特定情况下不起作用
- python-3.7 - 待办事项清单项目