# 构建阶段
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src

# 复制项目文件
COPY ["src/YZWater.Core/YZWater.Core.csproj", "YZWater.Core/"]
COPY ["src/YZWater.Avalonia/YZWater.Avalonia.csproj", "YZWater.Avalonia/"]

# 还原依赖
RUN dotnet restore "YZWater.Avalonia/YZWater.Avalonia.csproj"

# 复制源代码
COPY src/ .

# 构建
WORKDIR "/src/YZWater.Avalonia"
RUN dotnet build -c Release -o /app/build

# 发布阶段
FROM build AS publish
RUN dotnet publish -c Release -o /app/publish /p:UseAppHost=false

# 运行阶段
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final
WORKDIR /app

# 安装必要的依赖（Avalonia 需要一些图形库）
RUN apt-get update && apt-get install -y \
    libx11-6 \
    libx11-xcb1 \
    libxext6 \
    libxrender1 \
    libxtst6 \
    libxi6 \
    libfontconfig1 \
    && rm -rf /var/lib/apt/lists/*

# 复制发布文件
COPY --from=publish /app/publish .

# 创建数据和日志目录
RUN mkdir -p /app/Data /app/Logs /app/Backups

# 设置环境变量
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
ENV TZ=Asia/Shanghai

# 暴露 WebSocket 端口
EXPOSE 8765

# 启动应用
ENTRYPOINT ["dotnet", "YZWater.Avalonia.dll"]
