Sex*_*yMF 3 c# docker .net-core
我有这个 .net core 的 Dockerfile
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"]
Run Code Online (Sandbox Code Playgroud)
当我运行 docker 时,出现错误:
A fatal error was encountered. The library 'libhostpolicy.so' required to execute the application was not found in '/app/'.
我读过这篇文章,它与我的问题无关
--独立需要 -r (--runtime)
-r, --runtime 要发布的目标运行时。这在创建独立部署时使用。默认是发布依赖于框架的应用程序。
我首先将 Dockerfile 中的发布命令更改为:
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish --self-contained --runtime linux-64
Run Code Online (Sandbox Code Playgroud)
我运行以下命令
$ RUN dotnet publish "WebApplication1.csproj" -c Release -o /app/publish --self-contained
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
/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]
Run Code Online (Sandbox Code Playgroud)
我将命令更改为:
$ dotnet publish -c Release --self-contained --runtime linux-x64 -o out
Run Code Online (Sandbox Code Playgroud)
它成功地发布了所有内容。
然后我构建了 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!
Run Code Online (Sandbox Code Playgroud)
所以我看到了 libhostpolicy.so 文件。
尝试启动 shell 并查找所有依赖项的构建和复制位置。COPY 命令可能出错。
| 归档时间: |
|
| 查看次数: |
19876 次 |
| 最近记录: |