C# 在Linux Docker中使用.Net标准库运行.Net核心应用程序
我有一个.Net Core 3.1.200,它引用了另一个用.Net标准1.3编写的代码(与.Net Framework应用程序共享) 当我尝试将图像推送到docker时,它会因各种内存故障而失败。 在添加引用之前,映像一直运行良好。 这是我的docker文件: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
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并起作用)