C# 在Linux Docker中使用.Net标准库运行.Net核心应用程序

C# 在Linux Docker中使用.Net标准库运行.Net核心应用程序,c#,linux,docker,.net-core,.net-standard,C#,Linux,Docker,.net Core,.net Standard,我有一个.Net Core 3.1.200,它引用了另一个用.Net标准1.3编写的代码(与.Net Framework应用程序共享) 当我尝试将图像推送到docker时,它会因各种内存故障而失败。 在添加引用之前,映像一直运行良好。 这是我的docker文件: FROM mcr.microsoft.com/dotnet/core/runtime:3.1 COPY bin/publish/ /app-docker-image WORKDIR /app-docker-image ENTRYP

我有一个.Net Core 3.1.200,它引用了另一个用.Net标准1.3编写的代码(与.Net Framework应用程序共享)

当我尝试将图像推送到docker时,它会因各种内存故障而失败。 在添加引用之前,映像一直运行良好。 这是我的docker文件:

FROM mcr.microsoft.com/dotnet/core/runtime:3.1

COPY bin/publish/ /app-docker-image

WORKDIR /app-docker-image

ENTRYPOINT ["dotnet", "app.dll"]
有没有办法让它在Linux docker上工作

谢谢

快速回答: 在自定义.net应用程序中引用项目。传输应用程序代码(以及docker内部的.NET标准库依赖项)并构建新映像

说明: 您当前的方法不是创建容器映像的推荐方法。您不会将预构建的代码复制到运行时映像

您应该将代码传输到SDK容器映像,而不是将发布文件夹从主机复制到容器

使用docker中的代码运行dotnet CLI命令来构建/发布代码

将已发布文件夹从SDK容器传输到运行时容器。您的docker文件应如下所示:

#请参阅,以了解Visual Studio如何使用此Dockerfile构建图像以加快调试

来自mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim作为基础 WORKDIR/app

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

FROM build AS publish
RUN dotnet publish "ConsoleApp1.csproj" -c Release -o /app/publish

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

你能分享你看到的错误信息吗?这是我得到的错误:dotnet[29542]:在libc-2.28中0 ip sp错误4的segfault。非常感谢!它需要一些修改(例如,最后一个FROM命令-没有“base”-更改为publish并起作用)