Dotnet核心ENTRYPOINT参数在Docker中添加连字符

时间:2018-01-25 13:37:17

标签: docker .net-core

我正在尝试在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"]

与我使用的相同......

1 个答案:

答案 0 :(得分:3)

这是一个奇怪的错误消息,但它确实是说无法找到dll。你可以看到这个"问题"的其他例子。在这里:https://github.com/dotnet/core-setup/issues/1126#issuecomment-327441394

当您运行dotnet foo.dll时,dotnet应用程序会尝试查找foo.dll并执行它。如果找不到dll,dotnet会认为您可能正在尝试a dotnet commanddotnet 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