diff --git a/Dockerfile b/Dockerfile index 90b0b0c..33f78b1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,6 +7,7 @@ # Stage 1: Bauen (mit Alpine + gcc) FROM alpine:3.19 AS build-env +# Pakete installieren RUN apk add --no-cache gcc musl-dev # Arbeitsverzeichnis setzen @@ -18,10 +19,28 @@ COPY deployment.c . # Code kompilieren RUN gcc -o deployment deployment.c +# Stage 2: Schlankes Runtime-Image +FROM alpine:3.19 + # Verzeichnis für Ausgabe anlegen RUN mkdir /output -#COPY --from=build-env /app/deployment /app/deployment +# Nicht-Root-User anlegen +RUN addgroup -S appgroup && adduser -S appuser -G appgroup +RUN chown appuser:appgroup /output + +# Nur die fertige Binary aus Stage 1 übernehmen +COPY --from=build-env /app/deployment /app/deployment + +# Volume für Ausgabe +VOLUME ["/output"] + +# Non-root User setzen +USER appuser + +# Healthcheck: prüft ob das Output-Verzeichnis erreichbar ist +HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \ + CMD test -d /output || exit 1 # Ausgabe wird ins Container-Dateisystem geschrieben ENTRYPOINT ["/bin/bash", "-c"]