# 学业邑规划 - 后台管理系统 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 # 安装 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 WORKDIR /app EXPOSE 8080 EXPOSE 8081 # 复制后端发布文件(包含 wwwroot) COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "MiAssessment.Admin.dll"]