diff --git a/Dockerfile b/Dockerfile index 0f29ebd..8ffe1de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ RUN apk add --no-cache gcc musl-dev # Arbeitsverzeichnis für den Build-Prozess WORKDIR /build -# C-Code kopieren +# nur C-Code kopieren COPY deployment.c . # Code kompilieren (-O2 optimiert die Performance der Binärdatei) @@ -21,28 +21,24 @@ WORKDIR /app # OPTIMIERUNG: System-Update durchführen, um CVEs zu fixen # 'apk upgrade' installiert die Version 3.3.7-r0 von OpenSSL -RUN apk update && apk upgrade --no-cache - # Non-Root User anlegen -# RUN addgroup -S appgroup -# RUN adduser -S appuser -G appgroup - # Verzeichnis für Ausgabe anlegen -RUN mkdir -p /output - # Dem User die Rechte für die Ordner /app und /output geben -# RUN chown -R appuser:appgroup /app /output +RUN apk update && apk upgrade --no-cache && \ + addgroup -S -g 1000 appgroup && \ + adduser -S -u 1000 -G appgroup appuser && \ + mkdir -p /output && \ + chown -R 1000:1000 /app /output # nur die fertige Binärdatei aus der "builder"-Stage kopieren -COPY --from=builder /build/deployment /app/ -# COPY --from=builder --chown=appuser:appgroup /build/deployment /app/ +COPY --from=builder --chown=1000:1000 /build/deployment /app/ -# 3. Data Volume für die Ausgabe mounten +# 3. Ab hier läuft alles als sicherer Non-Root User +USER 1000 + +# 4. Data Volume für die Ausgabe mounten VOLUME ["/output"] -# 4. Ab hier läuft alles als sicherer Non-Root User -# USER appuser - # 5. Healthcheck implementieren # Da das C-Programm alle 10 Sekunden etwas schreibt, prüfen wir alle 15 Sekunden, # ob die Datei "/output/ausgabe.log" existiert und Daten enthält (-s).