#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM alpine:latest AS base ENV \ # UID of the non-root user 'app' APP_UID=1654 \ # Configure web servers to bind to port 8080 when present ASPNETCORE_HTTP_PORTS=8080 \ # Enable detection of running in a container DOTNET_RUNNING_IN_CONTAINER=true \ # Set the invariant mode since ICU package isn't included (see https://github.com/dotnet/announcements/issues/20) DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=true RUN apk add --upgrade --no-cache \ ca-certificates-bundle \ \ # .NET dependencies libgcc \ libssl3 \ libstdc++ \ zlib # Create a non-root user and group RUN addgroup \ --gid=$APP_UID \ app \ && adduser \ --uid=$APP_UID \ --ingroup=app \ --disabled-password \ app WORKDIR /app USER app EXPOSE 8080 FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0-alpine AS build ARG BUILD_CONFIGURATION=Release ARG TARGETARCH WORKDIR /src COPY ["AS1024.GeoFeed/AS1024.GeoFeed.csproj", "AS1024.GeoFeed/"] RUN dotnet restore "./AS1024.GeoFeed/./AS1024.GeoFeed.csproj" -a $TARGETARCH COPY . . WORKDIR "/src/AS1024.GeoFeed" RUN dotnet build "./AS1024.GeoFeed.csproj" -c $BUILD_CONFIGURATION -o /app/build -a $TARGETARCH /p:StaticLink=true FROM --platform=$BUILDPLATFORM build AS publish ARG BUILD_CONFIGURATION=Release ARG TARGETARCH RUN dotnet publish "./AS1024.GeoFeed.csproj" -c $BUILD_CONFIGURATION -o /app/publish -a $TARGETARCH --self-contained FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["/app/AS1024.GeoFeed"]