Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 25 additions & 25 deletions src/Function.SDK.CSharp.Sample/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base
USER $APP_UID
WORKDIR /app
# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:9.0-noble-chiseled-extra AS base
USER $APP_UID
WORKDIR /app
Comment on lines +1 to +4

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P1] Switching debug stage to chiseled image removes required shell

This stage is explicitly documented as the image used by Visual Studio “fast mode” debugging, but chiseled images intentionally omit /bin/sh and most diagnostic tooling. Visual Studio’s container debugger starts vsdbg with docker exec … /bin/sh -c …; without a shell the attach sequence fails with “executable file not found”, so debugging the sample in fast mode will break. Consider keeping the full aspnet:9.0 image (or installing a shell) for the development stage while still using chiseled images for production.

Useful? React with 👍 / 👎.

EXPOSE 9443

# This stage is used to build the service project
ARG BUILDPLATFORM=linux/amd64
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0 AS build
ARG BUILD_CONFIGURATION=Release
# This stage is used to build the service project
ARG BUILDPLATFORM=linux/amd64
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-noble AS build
ARG BUILD_CONFIGURATION=Release
ARG VERSION=0.0.1
WORKDIR /src
COPY ["Function.SDK.CSharp.Sample/Function.SDK.CSharp.Sample.csproj", "Function.SDK.CSharp.Sample/"]
COPY ["Function.SDK.CSharp.SourceGenerator/Function.SDK.CSharp.SourceGenerator.csproj", "Function.SDK.CSharp.SourceGenerator/"]
COPY ["Function.SDK.CSharp/Function.SDK.CSharp.csproj", "Function.SDK.CSharp/"]
RUN dotnet restore "./Function.SDK.CSharp.Sample/Function.SDK.CSharp.Sample.csproj"
COPY . .
WORKDIR "/src/Function.SDK.CSharp.Sample"
WORKDIR /src
COPY ["Function.SDK.CSharp.Sample/Function.SDK.CSharp.Sample.csproj", "Function.SDK.CSharp.Sample/"]
COPY ["Function.SDK.CSharp.SourceGenerator/Function.SDK.CSharp.SourceGenerator.csproj", "Function.SDK.CSharp.SourceGenerator/"]
COPY ["Function.SDK.CSharp/Function.SDK.CSharp.csproj", "Function.SDK.CSharp/"]
RUN dotnet restore "./Function.SDK.CSharp.Sample/Function.SDK.CSharp.Sample.csproj"
COPY . .
WORKDIR "/src/Function.SDK.CSharp.Sample"
RUN dotnet build "./Function.SDK.CSharp.Sample.csproj" -c $BUILD_CONFIGURATION --use-current-runtime -o /app/build /p:Version=${VERSION}

# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
ARG VERSION=0.0.1
RUN dotnet publish "./Function.SDK.CSharp.Sample.csproj" -c $BUILD_CONFIGURATION --use-current-runtime -o /app/publish /p:UseAppHost=false /p:Version=${VERSION}

# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final

WORKDIR /
COPY Function.SDK.CSharp.Sample/package.yaml .

WORKDIR /app
COPY --from=publish /app/publish .
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Function.SDK.CSharp.Sample.dll"]
Loading