windows - docker 镜像构建卡住了
问题描述
我需要为 windows 10 上的窗口应用程序构建一个 windows docker 映像,并在 vm 上安装了 docker 桌面,但是在运行此应用程序的安装时构建过程卡住了。日志看起来像下面的东西,
PS C:\docker> docker image build . -t app
Sending build context to Docker daemon 144.1MB
Step 1/6 : FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8
---> 9b87edf03093
Step 2/6 : COPY . /app
---> ac4b1124d856
Step 3/6 : WORKDIR /app
---> Running in cf4bd2345d26
Removing intermediate container cf4bd2345d26
---> d4f28097afd9
Step 4/6 : RUN .\ELSA1.0_2.6.6.243.exe
---> Running in b9356f975aa6
(And the process is stuck for several hours here and is terminated by me)
码头文件是
FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8 # this is a base image because asp.net 3.5 is a prerequisite for the app
COPY . /app
WORKDIR /app
RUN .\ELSA1.0_2.6.6.243.exe # I am stuck here!
我试图像这样在基本图像中做一些事情,但似乎我无能为力
PS C:\docker> docker container run -it
mcr.microsoft.com/dotnet/framework/aspnet:4.8
Service 'w3svc' has been stopped
Service 'w3svc' started
有什么好的想法来调试这个问题吗?顺便说一句,安装程序可以在 Windows 10 上正常工作。
解决方案
你永远不应该在RUN
不终止的语句中执行命令。我在 Docker 构建日志中看到您在命令中启动了exe
文件。RUN
这将保持您的 docker 构建过程并等待SIGINT
. 如果您执行,也会发生同样的情况,RUN npm start
因此它将挂起构建过程。
在入口点或 CMD 添加您的可执行文件。
在这种情况下,另一件事可能是问题
在 Windows 中使用 CMD 的注意事项
在 Windows 上,在 CMD 指令中指定的文件路径必须使用正斜杠或已转义的反斜杠 \。以下是有效的 CMD 指令:
dockerfile
# exec form
CMD ["c:\\Apache24\\bin\\httpd.exe", "-w"]
# shell form
CMD c:\\Apache24\\bin\\httpd.exe -w
您可以在此处进一步了解 Window CMD
但是,以下没有正确斜杠的格式将不起作用:
dockerfile
CMD c:\Apache24\bin\httpd.exe -w
推荐阅读
- sql - 无法创建简单的 SQL 测试
- c# - 如何使用 OneLogin 工具包向使用 X509 证书的服务提供商发布带有断言的 SAML 响应。在.net
- php - 使用 Jquery 动态创建的数据表
- java - 解析负整数时出现 NumberFormatException
- apache-spark - 结构化流从 kafka 获取错误的当前偏移量
- highcharts - 始终将 Highcharts 工具提示相对于标记点放在顶部
- node.js - Ajax 从 node.js 获取 HTML 而不是 SQL 结果
- python - 如何使用正则表达式在python中用字符替换特定整数?
- docusignapi - DocuSign API 复合模板服务器模板理解
- r - 将子目录中的多个 Excel 工作簿读取到一个数据框中