c# - 如何在 docker 容器中运行 asp.net 核心应用程序?

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

我对 .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"]

我的设置有什么问题?

最佳答案

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

nanoserver 是 headless 的,因此操作系统不支持 GUI。并且驱动程序打印机未安装在操作系统中。

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

关于c# - 如何在 docker 容器中运行 asp.net 核心应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57331440/

相关文章:

c# - 如何遍历所有模型显示(名称=)属性值

docker - 使用 Go Docker API 从挂载文件获取文件上下文

docker - 检查 Go 中私有(private)注册表中是否存在 docker 镜像

docker - 为什么我可以在环回设备上安装一个镜像,而不能在容器内的另一个设备上安装第二个镜像?

c# - 处理 Service Fabric 中的聚合异常

c# - File.ReadAllText 线程安全吗?

c# - 从 Web Api Controller 中的 Post 方法获取任何参数

c# - 正确使用表中列值中的列表?

asp.net-core - 如何动态设置 OpenIdConnect 中间件选项的权限?

entity-framework - 将 EF6 与 ASP.NET Core 结合使用