首页 > 解决方案 > 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 上正常工作。

标签: windowsdockercontainers

解决方案


你永远不应该在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

推荐阅读