changes for image

This commit is contained in:
Tizian.Breuch
2025-08-08 16:08:19 +02:00
parent 37dd4f2db1
commit b6f677477c
2 changed files with 47 additions and 88 deletions
+7 -8
View File
@@ -1,36 +1,35 @@
# Phase 1: Die Build-Phase
# Wir verwenden das offizielle .NET 8 SDK-Image, das alle Werkzeuge zum Bauen enthält.
# Verwendet das .NET 8 SDK-Image, das alle Werkzeuge zum Bauen enthält.
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
# Kopiere zuerst die Projekt- und Solution-Dateien.
# Docker ist schlau: Wenn sich diese Dateien nicht ändern, verwendet es den Cache und der 'restore'-Schritt wird übersprungen.
# Kopiere zuerst die Projekt- und Solution-Dateien, um den Docker-Cache optimal zu nutzen.
COPY ["ShopSolution.sln", "."]
COPY ["Webshop.Api/Webshop.Api.csproj", "Webshop.Api/"]
COPY ["Webshop.Application/Webshop.Application.csproj", "Webshop.Application/"]
COPY ["Webshop.Domain/Webshop.Domain.csproj", "Webshop.Domain/"]
COPY ["Webshop.Infrastructure/Webshop.Infrastructure.csproj", "Webshop.Infrastructure/"]
# Lade alle NuGet-Abhängigkeiten für die gesamte Solution herunter.
# Lade alle NuGet-Abhängigkeiten herunter.
RUN dotnet restore "ShopSolution.sln"
# Kopiere den gesamten restlichen Quellcode.
COPY . .
# Wechsle in das Verzeichnis des API-Projekts.
# Publiziert die Anwendung in einer Release-Konfiguration.
# `dotnet publish` kopiert automatisch alle notwendigen Dateien, einschließlich `wwwroot`.
WORKDIR "/src/Webshop.Api"
# Baue und publiziere die Anwendung in einer Release-Konfiguration.
# Das Ergebnis wird in den Ordner /app/publish verschoben.
RUN dotnet publish "Webshop.Api.csproj" -c Release -o /app/publish --no-restore
# ---
# Phase 2: Die finale Runtime-Phase
# Wir verwenden das deutlich kleinere ASP.NET Core Runtime-Image, da wir den Code nicht mehr kompilieren müssen.
# Verwendet das kleinere ASP.NET Core Runtime-Image für eine geringere Größe.
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final
WORKDIR /app
# Kopiere nur die publizierte Anwendung aus der Build-Phase.
# Der `publish`-Ordner enthält die DLLs, Abhängigkeiten und den `wwwroot`-Ordner.
COPY --from=build /app/publish .
# Definiere den Befehl, der ausgeführt wird, wenn der Container startet.