FROM mcr.microsoft.com/dotnet/sdk:7.0-alpine AS build-image ARG FUNCTION_DIR="/build" ARG SAM_BUILD_MODE="run" ARG ROOT_PATH="src/NET7NativeContainers" ARG FUNCTION_PATH="GetProduct" ENV PATH="/root/.dotnet/tools:${PATH}" RUN apk add clang build-base zlib-dev RUN mkdir $FUNCTION_DIR WORKDIR $FUNCTION_DIR COPY Directory.Build.props . COPY $ROOT_PATH/$FUNCTION_PATH/Function.cs $ROOT_PATH/$FUNCTION_PATH/$FUNCTION_PATH.csproj $FUNCTION_DIR/$FUNCTION_PATH/ COPY $ROOT_PATH/Shared/DataAccess/* $ROOT_PATH/Shared/Models/* $ROOT_PATH/Shared/JsonSerializerContext.cs $ROOT_PATH/Shared/Shared.csproj $FUNCTION_DIR/Shared/ # Build and Copy artifacts depending on build mode. RUN mkdir -p build_artifacts RUN dotnet publish -c Release $FUNCTION_PATH/$FUNCTION_PATH.csproj --runtime alpine-x64 --self-contained true \ /p:PublishTrimmed=true \ /p:TrimMode=Link RUN cp -r /build/$FUNCTION_PATH/bin/Release/net7.0/alpine-x64/publish/GetProduct /build/build_artifacts FROM alpine RUN apk add --no-cache libstdc++ COPY --from=build-image /build/build_artifacts/ /var/task/ # Command can be overwritten by providing a different command in the template directly. ENTRYPOINT ["var/task/GetProduct"]