| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- # 后端:.NET 10,在镜像内编译(宿主机无需安装 SDK)
- # 构建:在仓库根目录执行
- # docker build -f docker/Dockerfile.api -t aidop-api:latest .
- #
- # ★ 优化要点:先拷项目文件做 restore,再拷源码做 publish。
- # 这样只改 .cs 时 restore 层走缓存,构建从 ~8min 降到 ~1min。
- FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
- WORKDIR /src/server
- # ── 第一步:只拷 sln + 所有 csproj → restore(此层只在依赖变更时失效) ──
- COPY server/Admin.NET.sln ./
- COPY server/Admin.NET.Core/Admin.NET.Core.csproj Admin.NET.Core/
- COPY server/Admin.NET.Application/Admin.NET.Application.csproj Admin.NET.Application/
- COPY server/Admin.NET.Web.Core/Admin.NET.Web.Core.csproj Admin.NET.Web.Core/
- COPY server/Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj Admin.NET.Web.Entry/
- COPY server/Admin.NET.Test/Admin.NET.Test.csproj Admin.NET.Test/
- COPY server/Plugins/Admin.NET.Plugin.AiDOP/Admin.NET.Plugin.AiDOP.csproj Plugins/Admin.NET.Plugin.AiDOP/
- COPY server/Plugins/Admin.NET.Plugin.AiDOP.Tests/Admin.NET.Plugin.AiDOP.Tests.csproj Plugins/Admin.NET.Plugin.AiDOP.Tests/
- COPY server/Plugins/Admin.NET.Plugin.ApprovalFlow/Admin.NET.Plugin.ApprovalFlow.csproj Plugins/Admin.NET.Plugin.ApprovalFlow/
- COPY server/Plugins/Admin.NET.Plugin.DingTalk/Admin.NET.Plugin.DingTalk.csproj Plugins/Admin.NET.Plugin.DingTalk/
- COPY server/Plugins/Admin.NET.Plugin.GoView/Admin.NET.Plugin.GoView.csproj Plugins/Admin.NET.Plugin.GoView/
- COPY server/Plugins/Admin.NET.Plugin.K3Cloud/Admin.NET.Plugin.K3Cloud.csproj Plugins/Admin.NET.Plugin.K3Cloud/
- COPY server/Plugins/Admin.NET.Plugin.ReZero/Admin.NET.Plugin.ReZero.csproj Plugins/Admin.NET.Plugin.ReZero/
- COPY server/Plugins/Admin.NET.Plugin.WorkWeixin/Admin.NET.Plugin.WorkWeixin.csproj Plugins/Admin.NET.Plugin.WorkWeixin/
- RUN dotnet restore Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj
- # ── 第二步:拷全部源码 → publish(只有这层在改 .cs 时重建) ──
- COPY server/ .
- RUN dotnet publish Admin.NET.Web.Entry/Admin.NET.Web.Entry.csproj \
- -c Release -f net10.0 \
- -o /app/publish \
- --no-restore
- # ── 运行阶段 ──
- FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS final
- WORKDIR /app
- ENV LANG=zh-Hans.UTF-8 \
- DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \
- TZ=Asia/Shanghai \
- ASPNETCORE_URLS=http://0.0.0.0:5005
- RUN apt-get update \
- && apt-get install -y --no-install-recommends tzdata \
- && rm -rf /var/lib/apt/lists/*
- COPY --from=build /app/publish .
- EXPOSE 5005
- ENTRYPOINT ["dotnet", "Admin.NET.Web.Entry.dll"]
|