-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
51 lines (38 loc) · 1.58 KB
/
Dockerfile
File metadata and controls
51 lines (38 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
USER $APP_UID
WORKDIR /app
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY . .
RUN dotnet restore "GameFrameX.Launcher/GameFrameX.Launcher.csproj"
RUN dotnet restore "GameFrameX.Hotfix/GameFrameX.Hotfix.csproj"
WORKDIR "/src/GameFrameX.Launcher"
RUN dotnet build "GameFrameX.Launcher.csproj" -c $BUILD_CONFIGURATION -o /app/build
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "GameFrameX.Launcher.csproj" -f net10.0 -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
# 编译Hotfix程序集
WORKDIR "/src/GameFrameX.Hotfix"
RUN mkdir -p /app/build/hotfix
RUN dotnet build "GameFrameX.Hotfix.csproj" -c $BUILD_CONFIGURATION -o /app/build/hotfix /p:UseSharedCompilation=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
# 复制json配置文件
COPY GameFrameX.Config/json ./json
# 复制Hotfix编译结果到发布目录(包含所有依赖)
RUN mkdir -p /app/hotfix
COPY --from=publish /app/build/hotfix/ /app/hotfix/
# 热更依赖加载逻辑默认从 /app 根目录查找引用程序集,这里同步 DLL 到根目录
RUN cp -f /app/hotfix/*.dll /app/ || true
# 切换到root用户创建数据目录并设置权限
USER root
RUN mkdir -p /app/data && chmod 755 /app/data
# 复制发布文件
COPY --from=publish /app/publish .
# 声明数据卷以实现数据持久化
VOLUME ["/app/data"]
# 切换回非root用户运行应用
USER $APP_UID
ENTRYPOINT ["dotnet", "GameFrameX.Launcher.dll"]