# syntax=docker/dockerfile:1.7-labs ARG SDK_IMAGE=mcr.microsoft.com/dotnet/nightly/sdk:10.0 ARG RUNTIME_IMAGE=gcr.io/distroless/dotnet/aspnet:latest ARG PROJECT ARG ENTRYPOINT_DLL ARG VERSION=0.0.0 ARG CHANNEL=dev ARG GIT_SHA=0000000 ARG SOURCE_DATE_EPOCH=0 FROM ${SDK_IMAGE} AS build ARG PROJECT ARG GIT_SHA ARG SOURCE_DATE_EPOCH WORKDIR /src ENV DOTNET_CLI_TELEMETRY_OPTOUT=1 \ DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 \ NUGET_XMLDOC_MODE=skip \ SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH} COPY . . RUN --mount=type=cache,target=/root/.nuget/packages \ dotnet restore "${PROJECT}" RUN --mount=type=cache,target=/root/.nuget/packages \ dotnet publish "${PROJECT}" \ -c Release \ -o /app/publish \ /p:UseAppHost=false \ /p:ContinuousIntegrationBuild=true \ /p:SourceRevisionId=${GIT_SHA} \ /p:Deterministic=true \ /p:TreatWarningsAsErrors=true FROM ${RUNTIME_IMAGE} AS runtime WORKDIR /app ARG ENTRYPOINT_DLL ARG VERSION ARG CHANNEL ARG GIT_SHA ENV DOTNET_EnableDiagnostics=0 \ ASPNETCORE_URLS=http://0.0.0.0:8080 COPY --from=build /app/publish/ ./ RUN set -eu; \ printf '#!/usr/bin/env sh\nset -e\nexec dotnet %s "$@"\n' "${ENTRYPOINT_DLL}" > /entrypoint.sh; \ chmod +x /entrypoint.sh EXPOSE 8080 LABEL org.opencontainers.image.version="${VERSION}" \ org.opencontainers.image.revision="${GIT_SHA}" \ org.opencontainers.image.source="https://git.stella-ops.org/stella-ops/feedser" \ org.stellaops.release.channel="${CHANNEL}" ENTRYPOINT ["/entrypoint.sh"]