# Stage 1: Build FROM mcr.microsoft.com/dotnet/sdk:10.0-noble AS build WORKDIR /src # Copy projects COPY ["src/GmRelay.Web/GmRelay.Web.csproj", "src/GmRelay.Web/"] COPY ["src/GmRelay.Shared/GmRelay.Shared.csproj", "src/GmRelay.Shared/"] COPY ["src/GmRelay.ServiceDefaults/GmRelay.ServiceDefaults.csproj", "src/GmRelay.ServiceDefaults/"] # Restore RUN dotnet restore "src/GmRelay.Web/GmRelay.Web.csproj" # Copy all and build COPY src/ src/ WORKDIR /src/src/GmRelay.Web RUN dotnet publish "GmRelay.Web.csproj" -c Release -o /app/publish /p:UseAppHost=false # Stage 2: Runtime FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble AS final WORKDIR /app RUN apt-get update && apt-get install -y --no-install-recommends libgssapi-krb5-2 wget && rm -rf /var/lib/apt/lists/* COPY --from=build /app/publish . RUN mkdir -p /app/dataprotection-keys && chown -R $APP_UID:$APP_UID /app/dataprotection-keys ENV ASPNETCORE_URLS=http://+:8080 EXPOSE 8080 USER $APP_UID ENTRYPOINT ["dotnet", "GmRelay.Web.dll"]