2026-03-17 09:29:37 +08:00
FROM mcr.microsoft.com/dotnet/sdk:10.0-noble AS build-env
2025-04-20 16:06:23 +02:00
# Runtime can be e.g. win-x64, linux-x64 or linux-arm64, see officially supported Runtime Identifiers
ARG RUNTIME
ENV DOTNET_EnableDiagnostics=0
ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
WORKDIR /App
COPY . ./
2026-03-17 09:29:37 +08:00
RUN dotnet publish Arrowgene.Ddon.Cli -p:Version=1.0.0.0 -p:EnableSdkContainerSupport=true -p:StripSymbols=true -p:DebugSymbols=false -p:DebugType=None -p:PublishReadyToRun=true --runtime ${RUNTIME:-linux-x64} -p:SelfContained=true -p:PublishSingleFile=false -p:TargetFramework=net10.0 -p:PublishTrimmed=false -p:IsAotCompatible=false -p:IsTrimmable=false -p:PublishAot=false -c Release -o out
2025-04-20 16:06:23 +02:00
RUN rm -rf out/Files/Client
2025-04-20 20:45:14 +02:00
# -extra is required due to timezone looks up, e.g. for 'Tokyo Standard Time' in Arrowgene.Ddon.GameServer.StampManager.RelativeSpanToReset(DateTime lastStamp)
2026-03-17 09:29:37 +08:00
FROM mcr.microsoft.com/dotnet/runtime-deps:10.0-noble-chiseled-extra
2025-04-20 16:06:23 +02:00
ENV DOTNET_EnableDiagnostics=0
ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
WORKDIR /var/ddon/server
COPY --from=build-env /App/out .
# Required due to dynamic script file compilation
USER root
# Database
EXPOSE 3306/tcp
# Game server
EXPOSE 52000/tcp
# Web server
EXPOSE 52099/tcp
# Login server
EXPOSE 52100/tcp
CMD ["/var/ddon/server/Arrowgene.Ddon.Cli", "server", "start"]