From e7304fab264003f02950bd9a04db2934aca26d34 Mon Sep 17 00:00:00 2001 From: Emma Arnold Date: Sat, 11 Apr 2026 11:55:05 +0000 Subject: [PATCH] Update Dockerfile --- Dockerfile | 48 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 33 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index 46a5643..86a64f4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,27 +1,45 @@ -# Base-Image -FROM alpine AS build-env +# ---- Build-Stage ---- +FROM alpine:3.20 AS build-env -# Pakete installieren -RUN apt-get update -RUN apt-get install -y build-essential gcc curl vim net-tools +# Build-Abhängigkeiten installieren (nur für die Build-Stage) +RUN apk add --no-cache \ + build-base \ + gcc \ + curl -# Arbeitsverzeichnis setzen WORKDIR /app -# alles kopieren -COPY . . +# Quellcode kopieren +COPY deployment.c . -# Code kompilieren -RUN gcc -o deployment deployment.c +# Programm kompilieren (statisch linken für bessere Portabilität) +RUN gcc -static -o deployment deployment.c -# Verzeichnis für Ausgabe anlegen -RUN mkdir /output +# ---- Finale Stage ---- +FROM alpine:3.20 +# Kein root User - eigenen User erstellen +RUN addgroup -g 1000 -S appgroup && \ + adduser -u 1000 -S appuser -G appgroup + +# Nur notwendige Pakete installieren (curl für healthcheck, net-tools nicht nötig) +RUN apk add --no-cache curl + +WORKDIR /app + +# Programm aus Build-Stage kopieren +COPY --from=build-env --chown=appuser:appgroup /app/deployment /app/deployment + +# Ausgabeverzeichnis mit korrekten Berechtigungen +RUN mkdir -p /output && chown -R appuser:appgroup /output + +# Zu nicht-root Benutzer wechseln USER appuser +# Healthcheck alle 30 Sekunden HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ CMD curl -f http://localhost:8080/health || exit 1 -# Ausgabe wird ins Container-Dateisystem geschrieben -ENTRYPOINT ["/bin/bash", "-c"] -CMD ["./deployment 10 > /output/output.txt && tail -f /output/output.txt"] \ No newline at end of file +# Programm ausführen (ohne Bash, direkt) +ENTRYPOINT ["/app/deployment"] +CMD ["10"] \ No newline at end of file