【问题标题】:How to run an asp.net core application in docker container?如何在 docker 容器中运行 asp.net 核心应用程序?
【发布时间】:2019-08-02 17:59:24
【问题描述】:

我对 .Net Core 和 Docker 完全陌生。

我在 ASP.NET Core 2.2 中创建了一个项目并选择了 docker 来运行。我的目标是学习 .Net Core 和 Docker。
在我的测试应用中,我使用Rotativa.AspNetCore

问题是:
- 当我使用 IIS Express 运行项目时,一切正常。
- 当我使用 docker 运行时,当我调用 Rotativa.AspNetCore 中的函数时项目停止。

抛线错误是:

return new ViewAsPdf("views/relatorios/render.cshtml", vm);

使用 IIS Express 调试时可以使用,但使用 Docker 时失败。

我知道,此时Rotativa.AspNetCore调用wkhtmltopdf.exe,可能问题出在这个调用上。

这是我的 dockerfile,它是自动生成的:

FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-nanoserver-1803 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-nanoserver-1803 AS build
WORKDIR /src
COPY ["Internacional/Internacional.csproj", "Internacional/"]
RUN dotnet restore "Internacional/Internacional.csproj"
COPY . .
WORKDIR "/src/Internacional"
RUN dotnet build "Internacional.csproj" -c Release -o /app

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

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

我的设置有什么问题?

【问题讨论】:

  • 这是在 Linux 容器还是 Windows 上?在 Docker 中,检查您选择的容器。因为如果它是 Linux 容器,那么您必须遵循不同的步骤才能使 Rotativa 正常工作。
  • 这是一个 Windows 容器。
  • .exe 是否使用 Copy Always 复制到您的项目中?并且 wkhtmltopdf 在您的启动中正确注册?
  • 我认为这与 Docker 无关。发布时,视图已预编译,因此文件不再存在(它们被编译成 .dll)。
  • @KirkLarkin 使用 linux 容器,您必须采取额外的步骤才能使事情正常进行。对于 Windows 容器,它应该像在 IIS 中一样工作,但我怀疑 .exe 没有被复制过来。

标签: c# docker asp.net-core .net-core


【解决方案1】:

wkhtmltopdf 在图像 mcr.microsoft.com/dotnet/core/aspnet 下不起作用,因为它基于 nanoserver。

nanoserver 是无头的,因此操作系统不支持 GUI。并且操作系统中没有安装驱动打印机。

将基础映像切换到 mcr.microsoft.com/windows/servercore。

【讨论】:

  • 只是“基”地址还是“构建”地址?
  • @AndySchmitt 使用基础映像 mcr.microsoft.com/windows/servercore 而不是 mcr.microsoft.com/dotnet/core/aspnet。并且不要忘记将 dotnet 和 aspnet 的运行时安装到基于 mcr.microsoft.com/windows/servercore 的映像中。
猜你喜欢
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
  • 2020-07-16
  • 2019-01-26
  • 2018-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多