37 lines
1.2 KiB
Docker
37 lines
1.2 KiB
Docker
# 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"] |