我正在尝试在Docker容器中配置运行简单的.NET Core Web API应用程序。我的dockerfile包含以下ENTRYPOINT
行:
ENTRYPOINT ["dotnet", "Project.name.dll"]
Dockerfile正确构建图像。当我运行它时,我有以下异常:
找不到匹配命令“dotnet-Project.name.dll”
的可执行文件
我不明白为什么参数以这种方式转换(添加连字符)。我使用microsoft/dotnet:2.0.0-sdk-stretch
容器。官方documentation建议关注ENTRYPOINT
config
ENTRYPOINT ["dotnet", "dotnetapp.dll"]
与我使用的相同......
答案 0 :(得分:3)
这是一个奇怪的错误消息,但它确实是说无法找到dll。你可以看到这个"问题"的其他例子。在这里:https://github.com/dotnet/core-setup/issues/1126#issuecomment-327441394
当您运行dotnet foo.dll
时,dotnet
应用程序会尝试查找foo.dll
并执行它。如果找不到dll,dotnet
会认为您可能正在尝试a dotnet command(dotnet foo
的行,类似于dotnet build
)。这使dotnet
查找名为dotnet-foo.dll
的可执行文件并尝试执行该操作。由于该文件也不存在,dotnet
最终错误地找不到dotnet-foo.dll
。
在您的情况下,看起来dotnet
无法找到Project.name.dll
。这个DLL真的存在吗?它是否存在于当前目录中?也许你需要提供它的完整路径?
哦,如果你在Azure上运行它,有一些已知的陷阱,例如putting your dlls under /home/
will just not work。