【发布时间】:2018-04-27 08:52:27
【问题描述】:
我正在运行 dotnet core 2.0 控制台项目。 尝试从 Docker 运行时遇到以下错误。
遇到致命错误。需要库“libhostpolicy.so” 在“/app”中找不到执行应用程序。
【问题讨论】:
我正在运行 dotnet core 2.0 控制台项目。 尝试从 Docker 运行时遇到以下错误。
遇到致命错误。需要库“libhostpolicy.so” 在“/app”中找不到执行应用程序。
【问题讨论】:
经过一番谷歌搜索,我发现了这个:
https://github.com/aspnet/aspnet-docker/issues/301
我不确定是什么原因造成的,但它似乎已经消失了。它是 可能是因为我的 appSettings.json 大小写不匹配,而不是 appsettings.json 这意味着该文件没有被加载。 虽然是可怕的错误。
在我的情况下,我忘记将 appsettings.json 复制到构建中。
希望这对其他人有所帮助,并在谷歌搜索中获得更高的排名。
【讨论】:
经过更多谷歌搜索,我们找到了这个链接:
http://szahariev.blogspot.co.nz/2016/10/libhostpolicyso-was-not-found-error.html
这导致我们发现我们以某种方式设法从 .csproj 文件中手动删除了(在我们的例子中)<OutputType>Exe</OutputType> 行。所以根本没有创建 runtimeconfig.json。
【讨论】:
在我的情况下,我在Linux 机器上为WorkerService 收到此错误。通过正确安装.Net Core 及其SDKs 进行修复。
【讨论】:
在GenerateRuntimeConfigurationFiles 之上,我还必须将<TargetFramework>netstandard2.1</TargetFramework> 替换为<TargetFramework>netcoreapp3.1</TargetFramework>。
所以很可能是.NET SDK版本安装相关。
【讨论】:
所以上面的答案都没有对我有用,但我终于找到了问题,它是在 API 的 .csproj 文件中的东西,它导致托管 API 的 docker 容器不以消息开头主题标题。
这是 PropertyGroup 节点中添加的行,大概是当有人发布了 windows 文件,然后签入了更新的 .csproj
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
事实证明,这是一个发布选项。删除它会将项目设置为可移植的默认值(在 UI 中),如果明确指定,则在文件中为“任意”。删除上面的行为我解决了这个问题。
编辑
附带说明一下,通过将 Dockerfile dotnet 发布参数更改为:
RUN dotnet publish ./src/API.csproj --self-contained --runtime linux-musl-x64 --configuration Release --output /app/publish
重要的部分是为 alpine-linux 添加了 --self-contained 和 --runtime linux-musl-x64 ...此图片:mcr.microsoft.com/dotnet/aspnet:3.1-alpine
构建镜像是mcr.microsoft.com/dotnet/sdk:3.1
【讨论】:
在我的情况下,问题是指定要运行的 .dll 不正确(库而不是 Web 应用程序)。
首先我确认服务启动成功
dotnet publish "MyProject.csproj" -c Release -o D:\publish --self-contained --runtime linux-x64
并在日志中看到有关无效 .dll 的消息。
然后我更正了 .dll 并尝试发布自包含和依赖于框架的内容——两者都成功启动。
所以原因可能很棘手。
【讨论】:
与 Docker 无关,但在尝试调试通过命令行(Azure Func Core 工具)创建的 Azure Core Function 时出现错误。当我尝试创建新的调试器配置时,VS Code 中的 launch.json 没有正确自动生成。然后,我使用 Azure Function 扩展重新创建了一个新的 Function App 项目并复制了生成的 launch.json。这个文件对我有用。
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to .NET Functions",
"type": "coreclr",
"request": "attach",
"processId": "${command:azureFunctions.pickProcess}"
}
]
}
【讨论】: