簡體   English   中英

.net 核心無法作為獨立應用程序運行。 在 docker

[英].net core Failed to run as a self-contained app. on a docker

我有這個 Dockerfile 用於 .net 核心

FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base
WORKDIR /app
EXPOSE 8080

FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build
WORKDIR /src
COPY ["./WebApplication1.csproj", "WebApplication1/"]
RUN dotnet restore "WebApplication1/WebApplication1.csproj"
COPY . .
WORKDIR "/src/WebApplication1"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish --self-contained

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

當我運行 docker 時出現錯誤:

A fatal error was encountered. The library 'libhostpolicy.so' required to execute the application was not found in '/app/'.

我讀了這個,它與我的問題無關

--self-contained 需要一個 -r (--runtime)

-r, --runtime 要發布的目標運行時。 這在創建獨立部署時使用。 默認是發布依賴於框架的應用程序。

我首先將 Dockerfile 中的發布命令更改為:

RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish --self-contained --runtime linux-64

新部分:

我運行以下命令

$ RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish --self-contained

我得到以下錯誤:

/usr/local/share/dotnet/sdk/3.0.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets(127,5): error NETSDK1031: It is not supported to build or publish a self-contained application without specifying a RuntimeIdentifier.  Please either specify a RuntimeIdentifier or set SelfContained to false. [/Users/ziaullahkhan/Code/SelfContainedApp/SelfContainedApp.csproj]

我將命令更改為:

$ dotnet publish -c Release --self-contained --runtime linux-x64 -o out

它成功地發布了所有內容。

然后我構建了 docker 映像。 在容器上啟動 shell

$ docker run -it khanziaullah/sca bash
root@eb5dc8083aa3:/app/out# ls -l libhostpolicy.so 
-rwxr--r-- 1 root root 327384 Sep 13 15:21 libhostpolicy.so
root@eb5dc8083aa3:/app/out# dotnet SelfContainedApp.dll
Hello World!

所以我看到了 libhostpolicy.so 文件。

嘗試啟動 shell 並查找所有依賴項的構建和復制位置。 COPY 命令可能出錯了。

嘗試將以下代碼添加到 csproj

<PackageReference Include="Microsoft.NETCore.App" Version="1.0.1" />

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM