ci: 添加 Api 和 Admin 的 Dockerfile
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
code@server 2026-03-23 23:27:08 +08:00
parent 87d3f450f9
commit f579c8f8c5
2 changed files with 25 additions and 93 deletions

View File

@ -1,56 +1,19 @@
# 学业邑规划 - 后台管理系统 Docker 构建文件
# 前端已预构建在 wwwroot 目录
# ==================== 阶段1: 构建后端 ====================
FROM mcr.microsoft.com/dotnet/sdk:10.0-noble AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
# 复制项目文件
COPY src/MiAssessment.Admin/MiAssessment.Admin.csproj src/MiAssessment.Admin/
COPY src/MiAssessment.Admin.Business/MiAssessment.Admin.Business.csproj src/MiAssessment.Admin.Business/
COPY src/MiAssessment.Model/MiAssessment.Model.csproj src/MiAssessment.Model/
COPY src/MiAssessment.Core/MiAssessment.Core.csproj src/MiAssessment.Core/
COPY src/MiAssessment.Infrastructure/MiAssessment.Infrastructure.csproj src/MiAssessment.Infrastructure/
# 还原依赖
RUN dotnet restore src/MiAssessment.Admin/MiAssessment.Admin.csproj
# 复制所有源码
COPY src/ src/
# 构建后端
WORKDIR /src/src/MiAssessment.Admin
RUN dotnet build MiAssessment.Admin.csproj -c $BUILD_CONFIGURATION -o /app/build
# ==================== 阶段2: 发布后端 ====================
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish MiAssessment.Admin.csproj -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
# ==================== 阶段3: 最终运行镜像 ====================
FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble AS final
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
# 安装 SkiaSharp 原生依赖(用于验证码生成等图形处理)
RUN apt-get update && apt-get install -y \
libfontconfig1 \
libfreetype6 \
libx11-6 \
libxext6 \
libxrender1 \
libc6-dev \
libgdiplus \
&& rm -rf /var/lib/apt/lists/*
USER $APP_UID
FROM mcr.microsoft.com/dotnet/aspnet:10.0-preview AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# 复制后端发布文件(包含 wwwroot
COPY --from=publish /app/publish .
FROM mcr.microsoft.com/dotnet/sdk:10.0-preview AS build
WORKDIR /src
COPY ["src/MiAssessment.Admin/MiAssessment.Admin.csproj", "src/MiAssessment.Admin/"]
COPY ["src/MiAssessment.Admin.Business/MiAssessment.Admin.Business.csproj", "src/MiAssessment.Admin.Business/"]
COPY ["src/MiAssessment.Model/MiAssessment.Model.csproj", "src/MiAssessment.Model/"]
COPY ["src/MiAssessment.Infrastructure/MiAssessment.Infrastructure.csproj", "src/MiAssessment.Infrastructure/"]
COPY ["src/MiAssessment.Core/MiAssessment.Core.csproj", "src/MiAssessment.Core/"]
RUN dotnet restore "src/MiAssessment.Admin/MiAssessment.Admin.csproj"
COPY . .
RUN dotnet publish "src/MiAssessment.Admin/MiAssessment.Admin.csproj" -c Release -o /app/publish --no-restore
FROM base AS final
WORKDIR /app
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MiAssessment.Admin.dll"]

View File

@ -1,49 +1,18 @@
# 学业邑规划 - 小程序 API 服务 Docker 构建文件
# ==================== 阶段1: 基础运行环境 ====================
FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble AS base
ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
USER $APP_UID
FROM mcr.microsoft.com/dotnet/aspnet:10.0-preview AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 5238
# ==================== 阶段2: 构建后端 ====================
FROM mcr.microsoft.com/dotnet/sdk:10.0-noble AS build
ARG BUILD_CONFIGURATION=Release
FROM mcr.microsoft.com/dotnet/sdk:10.0-preview AS build
WORKDIR /src
COPY ["src/MiAssessment.Api/MiAssessment.Api.csproj", "src/MiAssessment.Api/"]
COPY ["src/MiAssessment.Model/MiAssessment.Model.csproj", "src/MiAssessment.Model/"]
COPY ["src/MiAssessment.Core/MiAssessment.Core.csproj", "src/MiAssessment.Core/"]
COPY ["src/MiAssessment.Infrastructure/MiAssessment.Infrastructure.csproj", "src/MiAssessment.Infrastructure/"]
RUN dotnet restore "src/MiAssessment.Api/MiAssessment.Api.csproj"
COPY . .
RUN dotnet publish "src/MiAssessment.Api/MiAssessment.Api.csproj" -c Release -o /app/publish --no-restore
# 复制项目文件
COPY src/MiAssessment.Api/MiAssessment.Api.csproj src/MiAssessment.Api/
COPY src/MiAssessment.Model/MiAssessment.Model.csproj src/MiAssessment.Model/
COPY src/MiAssessment.Core/MiAssessment.Core.csproj src/MiAssessment.Core/
COPY src/MiAssessment.Infrastructure/MiAssessment.Infrastructure.csproj src/MiAssessment.Infrastructure/
# 还原依赖
RUN dotnet restore src/MiAssessment.Api/MiAssessment.Api.csproj
# 复制所有源码
COPY src/ src/
# 构建后端
WORKDIR /src/src/MiAssessment.Api
RUN dotnet build MiAssessment.Api.csproj -c $BUILD_CONFIGURATION -o /app/build
# ==================== 阶段3: 发布 ====================
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish MiAssessment.Api.csproj -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
# ==================== 阶段4: 最终运行镜像 ====================
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
# 创建 PDF 输出目录和静态图片目录,并赋予写入权限
USER root
RUN mkdir -p /app/wwwroot/reports /app/wwwroot/images/report \
&& chown -R $APP_UID:$APP_UID /app/wwwroot/reports /app/wwwroot/images/report
USER $APP_UID
COPY --from=build /app/publish .
ENTRYPOINT ["dotnet", "MiAssessment.Api.dll"]