Files
UnrealEngineUWP/Engine/Source/Programs/UnrealCloudDDC/dockerfile
Joakim Lindqvist 31f1e9e05a Unreal Cloud DDC - Support for generating presigned urls (redirect uri), is opt in and only works when interacting with a single blob. Also added ability to redirect blob reading to a nginx reverse proxy (using X-Accel) if one is present. Using the nginx proxy to send data enables it to be send using sendfile, which can be a significant speedup (5x speed on sending large blobs locally).
This also enabled a filesystem cache for the local docker compose setup, partially to be able to test this code but also to make it a bit more realistic in terms of its setup to production setups (though running a local blob storage means s3/azure blob performs much better then it does in real life)
Also renamed the controller serving the /blobs api from StorageController to BlobController which makes it more consistent with the compressed controller and with what the actual api is called.

#preflight none

[CL 24479250 by Joakim Lindqvist in ue5-main branch]
2023-03-02 07:34:44 -05:00

74 lines
3.1 KiB
Plaintext

# syntax=docker/dockerfile:1.2
FROM mcr.microsoft.com/dotnet/sdk:6.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.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:6.0 AS unreal-cloud-ddc-base
WORKDIR /app
COPY --from=build /app/out ./
LABEL org.opencontainers.image.documentation https://github.com/EpicGames/UnrealEngine/blob/ue5-main/Engine/Source/Programs/UnrealCloudDDC/README.md
# 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.19.0/datadog-dotnet-apm_2.19.0_amd64.deb
RUN dpkg -i ./datadog-dotnet-apm_2.19.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