从VS2019开始运行Docker容器的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从VS2019开始运行Docker容器的问题相关的知识,希望对你有一定的参考价值。

我建立了一个.Net Core 3.0控制台应用程序,该应用程序使用Telerik生成pdf报告。 Telerik利用GDI +库来执行此操作。该应用程序消耗了一个内部开发的dll,该dll依赖于Windows事件日志,因此不幸的是,目前无法在Linux上进行托管。

我正在尝试在Docker容器中运行此应用,但在使用完整的Windows server core图像时,努力通过Visual Studio 2019使它运行。据我了解,这是唯一需要GDI +库的图像。

[使用servercore:1803时,通过Visual Studio运行时收到此错误:“无法启动程序'C: Program Files dotnet dotnet.exe'。系统找不到指定的路径。”] >

Error message received from Visual Studio 2019根据容器工具和构建的日志输出,一切似乎都按预期工作。

这是我完整的dockerfile。当您选择“添加-> Docker支持...”时,这正是Visual Studio所添加的内容,所使用的图像除外。请注意,当我使用3.0-nanoserver-1803

时,Visual Studio会按预期运行容器,但是在执行需要GDI的报告生成代码时失败。
FROM mcr.microsoft.com/windows/servercore:1803 AS base
#FROM mcr.microsoft.com/dotnet/core/runtime:3.0-nanoserver-1803 AS base
WORKDIR /app   

FROM mcr.microsoft.com/windows/servercore:1803 AS build
#FROM mcr.microsoft.com/dotnet/core/sdk:3.0-nanoserver-1803 AS build
WORKDIR /src
COPY ["DM.Web.Reporting.Background/DM.Web.Reporting.Background.csproj", "DM.Web.Reporting.Background/"]
RUN dotnet restore "DM.Web.Reporting.Background/DM.Web.Reporting.Background.csproj"
COPY . .
WORKDIR "/src/DM.Web.Reporting.Background"
RUN dotnet build "DM.Web.Reporting.Background.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "DM.Web.Reporting.Background.csproj" -c Release -o /app/publish

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

我在这里做错什么了吗?我是Docker新手,所以希望我只是想念一些简单的东西。

我已经构建了.Net Core 3.0控制台应用程序,该应用程序使用Telerik生成pdf报告。 Telerik利用GDI +库来执行此操作。该应用程序使用内部开发的dll,该dll具有依赖项...

答案

这是因为您已经从.NET Core运行时和SDK基本映像更改为Windows Server Core映像:

FROM mcr.microsoft.com/windows/servercore:1803 AS build
#FROM mcr.microsoft.com/dotnet/core/sdk:3.0-nanoserver-1803 AS build

以上是关于从VS2019开始运行Docker容器的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Docker 容器中运行 VS Code 的扩展开发主机来测试我的 vscode 扩展?

如何从游牧民族运行 cassandra docker 容器?

使用 vs 代码对本机 docker 容器做出反应以发布到主机操作系统上的 android 模拟器

VS Code 没有为在 Docker 容器中运行的 Node 应用程序打断点

如何使用 VS Code 在 Docker 容器中远程调试 python 代码

使用 debugpy 和 vs 代码在 docker 容器中调试 python 导致超时/连接被拒绝