docker
This commit is contained in:
parent
1edbe04a71
commit
9d6d1f0af0
|
|
@ -1,8 +1,53 @@
|
|||
# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。
|
||||
# 学业邑规划 - 后台管理系统 Docker 构建文件
|
||||
# 包含前端构建和后端构建两个阶段
|
||||
|
||||
# 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble AS base
|
||||
# Install SkiaSharp native dependencies
|
||||
# ==================== 阶段1: 构建前端 ====================
|
||||
FROM node:20-alpine AS frontend-build
|
||||
WORKDIR /app/admin-web
|
||||
|
||||
# 复制前端项目文件
|
||||
COPY src/MiAssessment.Admin/admin-web/package*.json ./
|
||||
|
||||
# 安装依赖
|
||||
RUN npm ci --registry=https://registry.npmmirror.com
|
||||
|
||||
# 复制前端源码
|
||||
COPY src/MiAssessment.Admin/admin-web/ ./
|
||||
|
||||
# 构建前端
|
||||
RUN npm run build
|
||||
|
||||
# ==================== 阶段2: 构建后端 ====================
|
||||
FROM mcr.microsoft.com/dotnet/sdk:10.0-noble AS backend-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
|
||||
|
||||
# ==================== 阶段3: 发布后端 ====================
|
||||
FROM backend-build AS publish
|
||||
ARG BUILD_CONFIGURATION=Release
|
||||
RUN dotnet publish MiAssessment.Admin.csproj -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
|
||||
|
||||
# ==================== 阶段4: 最终运行镜像 ====================
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble AS final
|
||||
|
||||
# 安装 SkiaSharp 原生依赖(用于验证码生成等图形处理)
|
||||
RUN apt-get update && apt-get install -y \
|
||||
libfontconfig1 \
|
||||
libfreetype6 \
|
||||
|
|
@ -12,33 +57,16 @@ RUN apt-get update && apt-get install -y \
|
|||
libc6-dev \
|
||||
libgdiplus \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
USER $APP_UID
|
||||
WORKDIR /app
|
||||
EXPOSE 8080
|
||||
EXPOSE 8081
|
||||
|
||||
|
||||
# 此阶段用于生成服务项目
|
||||
FROM mcr.microsoft.com/dotnet/sdk:10.0-noble AS build
|
||||
ARG BUILD_CONFIGURATION=Release
|
||||
WORKDIR /src
|
||||
COPY ["src/HoneyBox.Admin/HoneyBox.Admin.csproj", "src/HoneyBox.Admin/"]
|
||||
COPY ["src/HoneyBox.Admin.Business/HoneyBox.Admin.Business.csproj", "src/HoneyBox.Admin.Business/"]
|
||||
COPY ["src/HoneyBox.Model/HoneyBox.Model.csproj", "src/HoneyBox.Model/"]
|
||||
COPY ["src/HoneyBox.Core/HoneyBox.Core.csproj", "src/HoneyBox.Core/"]
|
||||
COPY ["src/HoneyBox.Infrastructure/HoneyBox.Infrastructure.csproj", "src/HoneyBox.Infrastructure/"]
|
||||
RUN dotnet restore "./src/HoneyBox.Admin/HoneyBox.Admin.csproj"
|
||||
COPY . .
|
||||
WORKDIR "/src/src/HoneyBox.Admin"
|
||||
RUN dotnet build "./HoneyBox.Admin.csproj" -c $BUILD_CONFIGURATION -o /app/build
|
||||
|
||||
# 此阶段用于发布要复制到最终阶段的服务项目
|
||||
FROM build AS publish
|
||||
ARG BUILD_CONFIGURATION=Release
|
||||
RUN dotnet publish "./HoneyBox.Admin.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
|
||||
|
||||
# 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值)
|
||||
FROM base AS final
|
||||
WORKDIR /app
|
||||
# 复制后端发布文件
|
||||
COPY --from=publish /app/publish .
|
||||
ENTRYPOINT ["dotnet", "HoneyBox.Admin.dll"]
|
||||
|
||||
# 复制前端构建产物到 wwwroot
|
||||
COPY --from=frontend-build /app/admin-web/dist ./wwwroot
|
||||
|
||||
ENTRYPOINT ["dotnet", "MiAssessment.Admin.dll"]
|
||||
|
|
|
|||
|
|
@ -1,32 +1,39 @@
|
|||
# 请参阅 https://aka.ms/customizecontainer 以了解如何自定义调试容器,以及 Visual Studio 如何使用此 Dockerfile 生成映像以更快地进行调试。
|
||||
# 学业邑规划 - 小程序 API 服务 Docker 构建文件
|
||||
|
||||
# 此阶段用于在快速模式(默认为调试配置)下从 VS 运行时
|
||||
# ==================== 阶段1: 基础运行环境 ====================
|
||||
FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble AS base
|
||||
USER $APP_UID
|
||||
WORKDIR /app
|
||||
EXPOSE 8080
|
||||
|
||||
|
||||
# 此阶段用于生成服务项目
|
||||
# ==================== 阶段2: 构建后端 ====================
|
||||
FROM mcr.microsoft.com/dotnet/sdk:10.0-noble AS build
|
||||
ARG BUILD_CONFIGURATION=Release
|
||||
WORKDIR /src
|
||||
COPY ["src/HoneyBox.Api/HoneyBox.Api.csproj", "src/HoneyBox.Api/"]
|
||||
COPY ["src/HoneyBox.Model/HoneyBox.Model.csproj", "src/HoneyBox.Model/"]
|
||||
COPY ["src/HoneyBox.Core/HoneyBox.Core.csproj", "src/HoneyBox.Core/"]
|
||||
COPY ["src/HoneyBox.Infrastructure/HoneyBox.Infrastructure.csproj", "src/HoneyBox.Infrastructure/"]
|
||||
RUN dotnet restore "./src/HoneyBox.Api/HoneyBox.Api.csproj"
|
||||
COPY . .
|
||||
WORKDIR "/src/src/HoneyBox.Api"
|
||||
RUN dotnet build "./HoneyBox.Api.csproj" -c $BUILD_CONFIGURATION -o /app/build
|
||||
|
||||
# 此阶段用于发布要复制到最终阶段的服务项目
|
||||
# 复制项目文件
|
||||
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 "./HoneyBox.Api.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
|
||||
RUN dotnet publish MiAssessment.Api.csproj -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
|
||||
|
||||
# 此阶段在生产中使用,或在常规模式下从 VS 运行时使用(在不使用调试配置时为默认值)
|
||||
# ==================== 阶段4: 最终运行镜像 ====================
|
||||
FROM base AS final
|
||||
WORKDIR /app
|
||||
COPY --from=publish /app/publish .
|
||||
ENTRYPOINT ["dotnet", "HoneyBox.Api.dll"]
|
||||
ENTRYPOINT ["dotnet", "MiAssessment.Api.dll"]
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user