# ============ 多阶段构建:.NET 5.0 ============ # 构建阶段 FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build WORKDIR /src # 复制解决方案与全部项目文件(利用层缓存) COPY YHDocPrintCore.sln* ./ COPY src/*/*.csproj ./ RUN for f in src/*/*.csproj; do \ mkdir -p "$(dirname "$f")" && mv "$f" "$(dirname "$f")/"; \ done \ && dotnet restore YHDocPrintCore.sln # 复制源码并发布 COPY src/ src/ RUN dotnet publish src/YHDocPrintCore.WebApi/YHDocPrintCore.WebApi.csproj \ -c Release -o /app/publish --no-restore # 运行阶段 FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS runtime WORKDIR /app COPY --from=build /app/publish . # 日志目录(接口访问日志唯一输出,挂载卷便于采集) RUN mkdir -p /app/logs VOLUME ["/app/logs"] EXPOSE 80 ENV ASPNETCORE_URLS=http://+:80 # 生产配置通过环境变量注入(ConnectionStrings__SqlServer / Redis:ConnectionString 等) ENTRYPOINT ["dotnet", "YHDocPrintCore.WebApi.dll"]