Xuy*_*Shi 10 asp.net docker dockerfile docker-for-windows docker-desktop
我对 docker 很陌生。我正在尝试 dockerize 一个 helloworld API。但是当我尝试 docker run 图像时,我收到了这个错误:
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: container f891d7fc7af6e1183256043e6105fc87e25c6959d9745cc972b42c7b2e6f5a06 在创建系统调用过程中遇到错误:Windows无法找到指定的文件系统:(0x2) [事件详细信息:提供者:00000000-0000-0000-0000-000000000000] [事件详细信息:提供者:00000000-0000-0000-0000-0000000000000-0000-0000-0000-000000000000] .cpp(168)\vmcomputeagent.exe!00007FF683797B25: (caller: 00007FF68377A312) Exception(4) tid(108) 80070002 系统找不到指定的文件。CallContext:[\Bridge_ProcessMessage\ComputeSystemManager_ExecuteProcess\VmHostedContainer_ExecuteProcess] Provider: 00000000-0000-0000-0000-000000000000] 额外信息: {"CommandLine":"
我有一个简单的asp.net api。我把它发布到同一个文件夹./publish
这是我的 docker 文件
FROM microsoft/aspnet:4.7.1-windowsservercore-1709
WORKDIR /app
COPY ./publish .
WORKDIR bin
RUN ls
ENTRYPOINT ["dotnet", "HelloWorldDocker.dll"]
Run Code Online (Sandbox Code Playgroud)
ls显示HelloWorldDocker.dll是在目录中./bin (app/bin)。IDK这里有什么问题...
此行COPY ./publish .会将所有发布文件复制到您当前的工作目录中。包含 DLL 的 bin 文件夹现在位于此处:/app/bin/{your dll}。
没有必要像您那样将工作目录更改为 bin ;相反,您可以保留您的工作目录(留在 /app 中)并将入口点指定为:
ENTRYPOINT ["dotnet", "./bin/HelloWorldDocker.dll"]
-或者-
您可以将 WORKDIR 设置为/app/bin并指定您的入口点,就像您已经做的那样:ENTRYPOINT ["dotnet", "HelloWorldDocker.dll"]
您需要记住的主要事情是文件与工作目录的关系,您可以通过更改工作目录以及复制文件来管理文件,就像将所有发布文件复制到 /app 中一样