c# - 在 Linux Docker 中使用 .Net 标准库运行 .Net Core 应用程序
问题描述
我有一个 .Net Core 3.1.200,它引用了另一个用 .Net Standard 1.3 编写的代码(与 .Net Framework 应用程序共享)。
当我尝试将图像推送到 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 文件应如下所示:
#请参阅https://aka.ms/containerfastmode以了解 Visual Studio 如何使用此 Dockerfile 构建您的图像以加快调试速度。
FROM mcr.microsoft.com/dotnet/core/runtime:3.1-buster-slim AS base 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"]
推荐阅读
- java - Java:Feign 客户端中的默认值
- java - 当我们有 Class 类型的对象时如何在 Java 中创建一个实例
- python - 如何修复对话(文本)时间序列数据中的类别不平衡?
- python - 遍历所有值并找到该值的键
- ruby-on-rails - 使用 activeadmin_dynamic_fields 控制多个输入
- python - 如何实时从线程中获取数据?
- puppet - 将 Puppet DSL 转换为 Yaml - 如何两次获取相同的列表项?
- java - 新问题:在上下文初始化期间遇到异常。- 加拿大。参考。attem.: org.springframework.beans.factory.UnsatisfiedDependencyException
- google-apps-script - 尝试通过 appscript 向 google sheet 添加多个不同的增量函数
- python - Python Selenium - 无法单击 Onclick 跨度类