From 0d85c9567263cb73e694fd31f453eca60d408988 Mon Sep 17 00:00:00 2001 From: Tanja Kuerzdoerfer Date: Sat, 18 Apr 2026 09:31:55 +0000 Subject: [PATCH] Dockerfile aktualisiert --- Dockerfile | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/Dockerfile b/Dockerfile index 846c335..2dad8f5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,29 +1,40 @@ FROM alpine:latest -RUN apk add --no-cache \ - build-base +# Nur notwendige Build-Tools installieren + sofort aufräumen +RUN apk add --no-cache build-base && \ + rm -rf /var/cache/apk/* +# Non-root User + Gruppe anlegen (hohe UID/GID für bessere Security) RUN addgroup -S -g 10001 appgroup && \ adduser -S -u 10001 -G appgroup -h /app -s /bin/sh appuser WORKDIR /app +# Quellcode als root kopieren (COPY --chown funktioniert zuverlässig) COPY --chown=appuser:appgroup . . +# Als non-root User kompilieren USER appuser -RUN gcc -o deployment deployment.c -O2 - -RUN mkdir -p /output && \ - chown appuser:appgroup /output +RUN gcc -o deployment deployment.c -O2 -static # -static macht das Binary robuster +# ← WICHTIG: Hier wieder zurück zu root, um /output zu erstellen + chown USER root -HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \ - CMD pgrep deployment || exit 1 +# Ausgabe-Verzeichnis als root anlegen und dem appuser geben +RUN mkdir -p /output && \ + chown -R appuser:appgroup /output && \ + chmod 755 /output +# HEALTHCHECK (läuft als root – das ist bei HEALTHCHECK erlaubt und empfohlen) +HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ + CMD pgrep -x deployment > /dev/null || exit 1 + +# Volume deklarieren (wird beim Start mit -v gemountet) VOLUME ["/output"] +# Endgültig als non-root User starten USER appuser +# Startbefehl ENTRYPOINT ["/bin/sh", "-c"] -CMD ["./deployment 10 > /output/output.txt 2>&1 && tail -f /output/output.txt"] \ No newline at end of file +CMD ["./deployment 10 > /output/output.txt 2>&1 && exec tail -f /output/output.txt"] \ No newline at end of file