From 3f6c9e3be1d9b0470b187d3e47578d2118a209e8 Mon Sep 17 00:00:00 2001 From: Aaron Voelker Date: Sun, 17 May 2026 16:11:50 +0000 Subject: [PATCH] Dockerfile aktualisiert --- Dockerfile | 50 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/Dockerfile b/Dockerfile index 95f702c..47f34c9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,41 @@ -# Base-Image -FROM alpine AS build-env +# ----------------------- +# 1. BUILD STAGE +# ----------------------- +FROM gcc:13-alpine AS builder -# Pakete installieren -RUN akp add --no-cache biuld-base curl - -# Arbeitsverzeichnis setzen WORKDIR /app -# alles kopieren -COPY . . +COPY deployment.c . -# Code kompilieren -RUN gcc -o deployment deployment.c +RUN gcc -O2 -o deployment deployment.c -# Verzeichnis für Ausgabe anlegen -RUN mkdir /output -# 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 +# ----------------------- +# 2. RUNTIME STAGE +# ----------------------- +FROM alpine:latest + +# Sicherheitsuser anlegen +RUN addgroup -S appgroup && adduser -S appuser -G appgroup + +WORKDIR /app + +# nur Binary übernehmen +COPY --from=builder /app/deployment /app/deployment + +# Output-Verzeichnis +RUN mkdir /output && chown -R appuser:appgroup /output /app + +# Non-root User +USER appuser + +# Volume für Ausgabe +VOLUME ["/output"] + +# Healthcheck (angepasst an dein Programm) +# Falls es nur einmal läuft: alternative prüfen (siehe Hinweis unten) +HEALTHCHECK --interval=30s --timeout=3s \ + CMD test -f /output/output.txt || exit 1 + +# Start +CMD ["/app/deployment", "10"] \ No newline at end of file