Files
UnrealEngineUWP/Engine/Source/Programs/UnrealCloudDDC/dockerfile
joakim lindqvist e7702a85ae Unreal Cloud DDC - .NET 8 Upgrade
Includes updates of all nuget packages to their latest versions, except for Azure.Blob.Storage were the latest versions are not compatible with the test server we are using.

Updated our docker image base to .net 8 images and upgrade the datadog tracer to 2.46.0

[CL 31000814 by joakim lindqvist in ue5-main branch]
2024-01-30 07:04:44 -05:00

77 lines
3.3 KiB
Plaintext

# syntax=docker/dockerfile:1.2
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /app
ARG UE_P4_CHANGELIST=0
# Copy csprojs for nuget restore
COPY Programs/Shared/EpicGames.Core/*.csproj ./Programs/Shared/EpicGames.Core/
COPY Programs/Shared/EpicGames.AspNet/*.csproj ./Programs/Shared/EpicGames.AspNet/
COPY Programs/Shared/EpicGames.Horde/*.csproj ./Programs/Shared/EpicGames.Horde/
COPY Programs/Shared/EpicGames.IoHash/*.csproj ./Programs/Shared/EpicGames.IoHash/
COPY Programs/Shared/EpicGames.Oodle/*.csproj ./Programs/Shared/EpicGames.Oodle/
COPY Programs/Shared/EpicGames.OIDC/*.csproj ./Programs/Shared/EpicGames.OIDC/
COPY Programs/Shared/EpicGames.Serialization/*.csproj ./Programs/Shared/EpicGames.Serialization/
COPY Programs/UnrealCloudDDC/Jupiter.Common/*.csproj ./Programs/UnrealCloudDDC/Jupiter.Common/
COPY Programs/UnrealCloudDDC/Jupiter/*.csproj ./Programs/UnrealCloudDDC/Jupiter/
RUN dotnet restore Programs/UnrealCloudDDC/Jupiter/Jupiter.csproj
# all nuget prereqs are now done
# copy the source we need
COPY Programs/Shared/ Programs/Shared/
COPY Programs/UnrealCloudDDC/ Programs/UnrealCloudDDC/
# build and create the dll
RUN dotnet publish -c Release -o out Programs/UnrealCloudDDC/Jupiter/Jupiter.csproj
# setup the base version of UnrealCloudDDC
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS unreal-cloud-ddc-base
WORKDIR /app
COPY --from=build /app/out ./
COPY Programs/UnrealCloudDDC/ThirdParty/license.txt license.txt
LABEL org.opencontainers.image.documentation https://github.com/EpicGames/UnrealEngine/blob/ue5-main/Engine/Source/Programs/UnrealCloudDDC/README.md
LABEL org.opencontainers.image.licenses "MIT"
# create the actual deployable slim image
FROM unreal-cloud-ddc-base AS unreal-cloud-ddc-slim
ENTRYPOINT dotnet Jupiter.dll
# add some useful debug tooling
FROM unreal-cloud-ddc-base AS unreal-cloud-ddc
RUN apt-get update &&\
apt-get install curl unzip procps -y &&\
rm -rf /var/lib/apt/lists/* &&\
curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l /vsdbg
ENTRYPOINT dotnet Jupiter.dll
FROM unreal-cloud-ddc-base AS unreal-cloud-ddc-datadog
# Add the debugger from the normal UnrealCloudDDC build
RUN apt-get update &&\
apt-get install curl unzip procps -y &&\
rm -rf /var/lib/apt/lists/* &&\
curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l /vsdbg
# Add the datadog tracer
RUN curl -LO https://github.com/DataDog/dd-trace-dotnet/releases/download/v2.46.0/datadog-dotnet-apm_2.46.0_amd64.deb
RUN dpkg -i ./datadog-dotnet-apm_2.46.0_amd64.deb
RUN /opt/datadog/createLogPath.sh
# datadog APM requirments
ENV CORECLR_ENABLE_PROFILING=1
ENV CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
ENV CORECLR_PROFILER_PATH=/opt/datadog/Datadog.Trace.ClrProfiler.Native.so
ENV DD_INTEGRATIONS=/opt/datadog/integrations.json
ENV DD_DOTNET_TRACER_HOME=/opt/datadog
# enable datadog continus profiler
ENV LD_PRELOAD=/opt/datadog/continuousprofiler/Datadog.Linux.ApiWrapper.x64.so
# Disable automatic instrumentation of APM and log injection
# We use open telemetry to send the APM stats, we have this tracer for other features like runtime metrics
ENV DD_TRACE_ENABLED=false
ENV DD_LOGS_INJECTION=false
# do not consider http 400-499 statuses errors
ENV DD_HTTP_CLIENT_ERROR_STATUSES=500-599
ENV DD_RUNTIME_METRICS_ENABLED=true
ENTRYPOINT dotnet Jupiter.dll