1+ # ==========================================
12# 1. 运行环境阶段 (Base)
2- FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
3+ # ==========================================
4+ FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
5+ # 切换到 root 用户以配置文件系统和时区
36USER root
47# 设置时区为亚洲/上海
58RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
69 echo "Asia/Shanghai" > /etc/timezone
10+
11+ # 【最佳实践】:配置完系统环境后,务必降级为非特权用户 app,防止容器逃逸风险
12+ USER app
713WORKDIR /app
14+
15+ # 暴露 19001 端口 (你提到 19001 端口未被占用)
816EXPOSE 19001
17+ ENV ASPNETCORE_HTTP_PORTS=19001
918
19+ # ==========================================
1020# 2. 编译构建阶段 (Build)
11- FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
21+ # ==========================================
22+ FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
1223ARG BUILD_CONFIGURATION=Release
1324WORKDIR /src
1425
15- # 拷贝所有项目文件以进行 Restore (利用层缓存优化)
16- COPY ["Yi .Abp.sln" , "./" ]
17- COPY ["common.props" , "./" ]
26+ # 拷贝全局配置文件 (利用层缓存优化)
27+ COPY ["Sf .Abp.sln" , "./" ]
28+ COPY["common.props" , "./" ]
1829COPY ["usings.props" , "./" ]
1930COPY ["version.props" , "./" ]
2031
21- # 自动查找并拷贝所有 .csproj 文件
22- # 注意:这一步为了性能手动列出核心模块,或保持 COPY . .
2332# 针对本项目的多层级结构,直接拷贝全部源代码
33+ # (虽然会牺牲一部分 Docker 本地层缓存,但我们会在 GitHub Actions 中用外部缓存弥补)
2434COPY . .
2535
2636# 执行还原
27- RUN dotnet restore "src/Yi .Abp.Web/Yi .Abp.Web.csproj"
37+ RUN dotnet restore "src/Sf .Abp.Web/Sf .Abp.Web.csproj"
2838
29- # 执行发布
30- WORKDIR "/src/src/Yi .Abp.Web"
31- RUN dotnet publish "Yi .Abp.Web.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
39+ # 执行编译
40+ WORKDIR "/src/src/Sf .Abp.Web"
41+ RUN dotnet build "Sf .Abp.Web.csproj" -c $BUILD_CONFIGURATION -o /app/build
3242
33- # 3. 最终镜像阶段 (Final)
43+ # ==========================================
44+ # 3. 发布阶段 (Publish)
45+ # 【修复点】:增加独立的 publish 阶段,修复原代码 COPY --from 找不到阶段的 Bug
46+ # ==========================================
47+ FROM build AS publish
48+ RUN dotnet publish "Sf.Abp.Web.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
49+
50+ # ==========================================
51+ # 4. 最终镜像阶段 (Final)
52+ # ==========================================
3453FROM base AS final
3554WORKDIR /app
3655COPY --from=publish /app/publish .
37- # 默认启动 Yi.Abp.Web 模块
38- ENTRYPOINT ["dotnet" , "Yi.Abp.Web.dll" ]
56+
57+ # 默认启动 Sf.Abp.Web 模块
58+ ENTRYPOINT ["dotnet" , "Sf.Abp.Web.dll" ]
0 commit comments