我正在运行 dotnet core 2.0 控制台项目。尝试从 Docker 运行时遇到以下错误。
遇到致命错误。在“/app”中找不到执行应用程序所需的库“libhostpolicy.so”。
Rod*_*hev 17
对我来说,我必须将以下行添加到项目文件的PropertyGroup部分中:
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
Run Code Online (Sandbox Code Playgroud)
所以上面的答案都不适合我,但我终于找到了问题,它是 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
经过一番谷歌搜索后,我发现了这个: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
这导致我们发现我们以某种方式设法<OutputType>Exe</OutputType>
从 .csproj 文件中手动删除(在我们的例子中)行。所以根本没有创建runtimeconfig.json 。
归档时间: |
|
查看次数: |
21548 次 |
最近记录: |