遇到致命错误。需要库“libhostpolicy.so”

Kik*_*sen 27 docker .net-core

我正在运行 dotnet core 2.0 控制台项目。尝试从 Docker 运行时遇到以下错误。

遇到致命错误。在“/app”中找不到执行应用程序所需的库“libhostpolicy.so”。

Rod*_*hev 17

对我来说,我必须将以下行添加到项目文件的PropertyGroup部分中:

<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
Run Code Online (Sandbox Code Playgroud)

项目文件摘录


Loa*_*ian 8

所以上面的答案都不适合我,但我终于找到了问题,它是 API 的 .csproj 文件中的某些内容,它导致托管 API 的 docker 容器不以线程标题中的消息启动。

这是在节点中添加的行PropertyGroup,大概是当有人发布了 Windows 文件,然后签入更新的 .csproj 时

<RuntimeIdentifier>win-x64</RuntimeIdentifier>

事实证明这是一个发布选项。删除此项会将项目设置为可移植的默认值(在 UI 中),如果明确指定,则该值是文件中的“任意”。删除上面的行解决了我的问题。

编辑

作为旁注,我可以RuntimeIdentifier通过win-x64将 Dockerfile dotnet 发布参数更改为:

RUN dotnet publish ./src/API.csproj --self-contained --runtime linux-musl-x64 --configuration Release --output /app/publish
Run Code Online (Sandbox Code Playgroud)

重要的部分是添加--self-contained--runtime linux-musl-x64用于 alpine-linux ...这个图像:mcr.microsoft.com/dotnet/aspnet:3.1-alpine

其构建映像是mcr.microsoft.com/dotnet/sdk:3.1


Kik*_*sen 6

经过一番谷歌搜索后,我发现了这个:https :
//github.com/aspnet/aspnet-docker/issues/301

我不确定是什么导致了它,但它似乎已经消失了。这可能是因为我有一个 appSettings.json 而不是 appsettings.json 的大小写不匹配,这意味着文件没有被加载。可怕的错误虽然。

就我而言,是我忘记将 appsettings.json 复制到构建中。

在此处输入图片说明

希望这对其他人有所帮助,并在谷歌搜索中获得更高的成绩。


6fo*_*der 6

经过更多谷歌搜索后,我们发现了这个链接:

http://szahariev.blogspot.co.nz/2016/10/libhostpolicyso-was-not-found-error.html

这导致我们发现我们以某种方式设法<OutputType>Exe</OutputType>从 .csproj 文件中手动删除(在我们的例子中)行。所以根本没有创建runtimeconfig.json 。