diff --git a/server/MiAssessment/src/MiAssessment.Admin/Dockerfile b/server/MiAssessment/src/MiAssessment.Admin/Dockerfile index 82e9783..cb174b7 100644 --- a/server/MiAssessment/src/MiAssessment.Admin/Dockerfile +++ b/server/MiAssessment/src/MiAssessment.Admin/Dockerfile @@ -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"] diff --git a/server/MiAssessment/src/MiAssessment.Api/Dockerfile b/server/MiAssessment/src/MiAssessment.Api/Dockerfile index a8edcf7..125da91 100644 --- a/server/MiAssessment/src/MiAssessment.Api/Dockerfile +++ b/server/MiAssessment/src/MiAssessment.Api/Dockerfile @@ -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"]