# Basis Image das für die Build Umgebung verwendet wird FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine AS build-env # Wechseln ins Arbeitsverzeichnis WORKDIR /app # Kopieren der Projektdatei in Arbeitsverzeichnis COPY *.csproj ./ # Laden der Abhängigkeiten RUN dotnet restore # Kopieren des restlichen Quellcodes COPY . ./ # Kompilieren eds Quellcodes (Projektdatei muss nicht zwingend angegeben werden) RUN dotnet publish "SecDevOpsLab.csproj" -c Release -o out # Noch schlangere Basis Image für die Runtime Umgebung FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine # Wechseln ins Arbeitsverzeichnis WORKDIR /app # Öffnen des Ports für die Web-App (Standard bei .NET 8 Web-Apps ist 8080) EXPOSE 8080 # Konfigurieren des integrierten Kestrel-Webserver einer ASP.NET Core App ENV ASPNETCORE_URLS=http://+:8080 # Wechseln auf root (nur kurz) USER root # Ändern des File Owner (wichtig dass die Sqlite DB geschrieben werden kann) RUN mkdir -p /app/data && chown -R app:app /app/data && chmod -R 775 /app/data # Wechsel auf non-root User (app ist ein vorinstallierter User von Microsoft) USER app # Kopieren der fertigen Binärdateien aus der Build Umgebung COPY --from=build-env /app/out . # Festlegen des Start Befehls ENTRYPOINT ["dotnet", "SecDevOpsLab.dll"]