| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- # 构建阶段
- 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"]
|