Visual Studio Docker-Unterstützung für .NET 5/6

,

Beschreibung

Visual Studio bietet mittlerweile eine einfache Möglichkeit der Docker-Unterstützung in einem Projekt an. Es wird automatisch ein Dockerfile erzeugt, welches dann den Docker-Container erstellt und Ihre Anwendung automatisch in diesem veröffentlicht.

Standardmäßig ist das Basis-Docker-Image bei einer .NET 5 oder .NET 6 Anwendung ein Windows Nano Server Docker-Image mit dem entsprechenden Framework. Hierbei handelt es sich jedoch um ein sehr schlankes Betriebssystem, welches für die Ausführung von nativen Cloudanwendungen ausgelegt wurde. Diesem fehlt fast die gesamte Windows API (z.B. GDI+), die aber zwingend für List & Label benötigt wird. Daher muss für List & Label auf das Windows Server Core Docker-Image zurückgegriffen werden. Die nachfolgenden Dockerfiles verwenden das Windows Server Core 2019 Docker-Image.

Dockerfile

.NET 5

FROM mcr.microsoft.com/dotnet/aspnet:5.0-windowsservercore-ltsc2019 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/aspnet:5.0-windowsservercore-ltsc2019 AS build
WORKDIR /src
COPY ["WebApplication/WebApplication.csproj", "WebApplication/"]
RUN dotnet restore "WebApplication/WebApplication.csproj"
COPY . .
WORKDIR "/src/WebApplication"
RUN dotnet build "WebApplication.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication.dll"]

.NET 6

FROM mcr.microsoft.com/dotnet/aspnet:6.0-windowsservercore-ltsc2019 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/aspnet:6.0-windowsservercore-ltsc2019 AS build
WORKDIR /src
COPY ["WebApplication/WebApplication.csproj", "WebApplication/"]
RUN dotnet restore "WebApplication/WebApplication.csproj"
COPY . .
WORKDIR "/src/WebApplication"
RUN dotnet build "WebApplication.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication.dll"]

© combit GmbH