Files
secdevops-csharp-app/Dockerfile
Achim H. 06caba6243
All checks were successful
Tests / Declarative: Post Actions No test results found
csharp-secdevops-pipeline-pod/pipeline/head This commit looks good
changed Dockerfile and Program.cs
2026-05-12 12:46:05 +02:00

36 lines
1.2 KiB
Docker

# --- Stage 1: Build (Die Bau-Umgebung) ---
FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine AS build-env
WORKDIR /app
# 1. Nur Projektdatei kopieren und Abhängigkeiten laden (Nutzt Docker-Caching)
COPY *.csproj ./
#COPY *.sln ./
#COPY MyHelloWorld/*.csproj ./MyHelloWorld/
#COPY MyHelloWorld.Tests/*.csproj ./MyHelloWorld.Tests/
RUN dotnet restore
# 2. Den restlichen Quellcode kopieren und die App kompilieren
COPY . ./
#RUN dotnet publish MyHelloWorld/*.csproj -c Release -o out
RUN dotnet publish "SecDevOpsLab.csproj" -c Release -o out
# --- Stage 2: Runtime (Das fertige, schlanke Image) ---
FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine
WORKDIR /app
# 3. Port für die Web-App öffnen (Standard bei .NET 8 Web-Apps ist 8080)
EXPOSE 8080
ENV ASPNETCORE_URLS=http://+:8080
# 3. Den vorinstallierten User 'app' von Microsoft nutzen
# Erlaube dem User 'app' in das Verzeichnis zu schreiben (für SQLite)
USER root
RUN mkdir -p /app/data && chown -R app:app /app/data && chmod -R 775 /app/data
USER app
# 4. Nur die fertigen Binärdateien aus der Bau-Umgebung rüberschieben
COPY --from=build-env /app/out .
# 5. Startbefehl festlegen
# WICHTIG: Falls deine DLL anders heißt (z.B. MyHelloWorld.dll), passe den Namen hier an!
ENTRYPOINT ["dotnet", "SecDevOpsLab.dll"]