YD_Event.Admin/Dockerfile

49 lines
1.5 KiB
Docker
Raw Normal View History

2026-02-23 18:32:49 +08:00
# 基于.NET 8官方Linux镜像的多阶段构建
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 9996
2025-12-17 10:32:52 +08:00
2026-02-23 18:32:49 +08:00
# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
2025-12-17 10:32:52 +08:00
2026-02-23 18:32:49 +08:00
# 安装必要的依赖(如字体库,适配MiniExcel等)
RUN apt-get update && apt-get install -y fontconfig && apt-get clean
2025-12-17 10:32:52 +08:00
2026-02-23 18:32:49 +08:00
# 构建阶段
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
2025-12-17 10:32:52 +08:00
2026-02-23 18:32:49 +08:00
# 复制csproj文件并还原
COPY ["YD_Event.Web.Entry/YD_Event.Web.Entry.csproj", "YD_Event.Web.Entry/"]
COPY ["YD_Event.Web.Core/YD_Event.Web.Core.csproj", "YD_Event.Web.Core/"]
COPY ["YD_Event.Application/YD_Event.Application.csproj", "YD_Event.Application/"]
COPY ["YD_Event.Core/YD_Event.Core.csproj", "YD_Event.Core/"]
2025-12-17 10:32:52 +08:00
2026-02-23 18:32:49 +08:00
RUN dotnet restore "YD_Event.Web.Entry/YD_Event.Web.Entry.csproj"
# 复制所有源码
2025-12-17 10:32:52 +08:00
COPY . .
2026-02-23 18:32:49 +08:00
WORKDIR "/src/YD_Event.Web.Entry"
RUN dotnet build "YD_Event.Web.Entry.csproj" -c $BUILD_CONFIGURATION -o /app/build
2025-12-17 10:32:52 +08:00
2026-02-23 18:32:49 +08:00
# 发布阶段
2025-12-17 10:32:52 +08:00
FROM build AS publish
2026-02-23 18:32:49 +08:00
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "YD_Event.Web.Entry.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
2025-12-17 10:32:52 +08:00
2026-02-23 18:32:49 +08:00
# 运行阶段
2025-12-17 10:32:52 +08:00
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
2026-02-23 18:32:49 +08:00
# 配置Kestrel端口
ENV ASPNETCORE_URLS=http://*:9996
# 健康检查
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
CMD curl -f http://localhost:9996/health || exit 1
2025-12-17 10:32:52 +08:00
2026-02-23 18:32:49 +08:00
ENTRYPOINT ["dotnet", "YD_Event.Web.Entry.dll"]