HtmlToPdf/mvp/Dockerfile
2025-12-11 23:35:52 +08:00

73 lines
1.8 KiB
Docker
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ==================== 构建阶段 ====================
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /
# 复制项目文件并还原依赖
COPY ["HtmlToPdfService.Api/HtmlToPdfService.Api.csproj", "HtmlToPdfService.Api/"]
COPY ["HtmlToPdfService.Core/HtmlToPdfService.Core.csproj", "HtmlToPdfService.Core/"]
RUN dotnet restore "HtmlToPdfService.Api/HtmlToPdfService.Api.csproj"
# 复制所有源代码
COPY . .
# 构建和发布应用
WORKDIR "/HtmlToPdfService.Api"
RUN dotnet build -c Release -o /app/build
RUN dotnet publish -c Release -o /app/publish /p:UseAppHost=false
# 下载 Chromium
WORKDIR /chromium
RUN dotnet tool install --global PuppeteerSharp.Downloader || true
ENV PATH="$PATH:/root/.dotnet/tools"
RUN puppeteer-sharp-downloader || true
# ==================== 运行阶段 ====================
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final
# 安装 Chromium 运行依赖
RUN apt-get update && apt-get install -y \
wget \
gnupg \
ca-certificates \
libnss3 \
libatk1.0-0 \
libatk-bridge2.0-0 \
libcups2 \
libdrm2 \
libxkbcommon0 \
libxcomposite1 \
libxdamage1 \
libxfixes3 \
libxrandr2 \
libgbm1 \
libasound2 \
libpangocairo-1.0-0 \
libgtk-3-0 \
libxshmfence1 \
fonts-liberation \
fonts-noto-color-emoji \
fonts-wqy-zenhei \
fonts-wqy-microhei \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# 复制应用程序
COPY --from=build /app/publish .
# 复制 Chromium如果成功下载
COPY --from=build /root/.local-chromium /root/.local-chromium
# 创建 PDF 存储目录
RUN mkdir -p /app/pdfs && chmod 777 /app/pdfs
# 设置环境变量
ENV ASPNETCORE_URLS=http://+:5000
ENV ASPNETCORE_ENVIRONMENT=Production
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
EXPOSE 5000
ENTRYPOINT ["dotnet", "HtmlToPdfService.Api.dll"]