asp.net - Docker 运行给出“CreateProcess:Windows 系统调用失败:系统找不到指定的文件。(0x2)”
问题描述
我对码头工人很陌生。我正在尝试对 helloworld API 进行 dockerize 处理。但是当我尝试 docker run 图像时,我收到了这个错误:
C:\Program Files\Docker\Docker\Resources\bin\docker.exe:来自守护进程的错误响应:容器 f891d7fc7af6e1183256043e6105fc87e25c6959d9745cc972b42c7b2e6f5a06 在 CreateProcess 期间遇到错误:Windows 系统调用失败:系统找不到指定的文件。(0x2) [事件详细信息:提供程序:00000000-0000-0000-0000-000000000000] [事件详细信息:提供程序:00000000-0000-0000-0000-000000000000] [事件详细信息:vm\compute\management\orchestration\vmhostedcontainer\processmanagement .cpp(168)\vmcomputeagent.exe!00007FF683797B25: (caller: 00007FF68377A312) Exception(4) tid(108) 80070002 系统找不到指定的文件。CallContext:[\Bridge_ProcessMessage\ComputeSystemManager_ExecuteProcess\VmHostedContainer_ExecuteProcess] 提供者: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"]
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
推荐阅读
- r - R:确定组内某些子组的最大值和最小值之间的差异
- python - 试图用硒和BS筛选scrapy。得到一个看起来完全不合逻辑的奇怪错误
- javascript - 如何创建一个函数以供稍后在另一个函数中重用
- excel - 如何在文件之间传输数据?
- javascript - 在 jQuery 中指示表单完成的进度条
- python - Python - 在嵌套列表中查找 _any_ 和 _all_ 匹配项,并返回索引
- javascript - Javascript - 追加到一个 Div
- flask - Flask/SQL Alchemy:未找到应用程序。在视图函数中工作或推送应用程序上下文
- java - ANTLR 嵌套函数
- sql - SQL 模式多对多关系