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