diff --git a/Dockerfile b/Dockerfile index a5cdf64..586c88b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,22 +1,42 @@ # Base-Image -FROM ubuntu:latest +# -------- BUILD STAGE -------- +FROM gcc:13 AS builder -# Pakete installieren -RUN apt-get update -RUN apt-get install -y build-essential gcc curl vim net-tools +WORKDIR /build +COPY deployment.c . + +RUN gcc -O2 -o deployment deployment.c + + +# -------- RUNTIME STAGE -------- +FROM debian:bookworm-slim + +# Minimal installieren +RUN apt-get update && apt-get install -y \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +# Non-root user erstellen +RUN useradd -m appuser -# Arbeitsverzeichnis setzen WORKDIR /app -# alles kopieren -COPY . . +# Binary kopieren +COPY --from=builder /build/deployment . -# Code kompilieren -RUN gcc -o deployment deployment.c +# Output-Verzeichnis +RUN mkdir /output && chown appuser:appuser /output -# Verzeichnis für Ausgabe anlegen -RUN mkdir /output +# Rechte setzen +USER appuser -# Ausgabe wird ins Container-Dateisystem geschrieben -ENTRYPOINT ["/bin/bash", "-c"] +# Volume definieren +VOLUME ["/output"] + +# Healthcheck (prüft ob Datei existiert & nicht leer ist) +HEALTHCHECK --interval=30s --timeout=5s --start-period=5s \ + CMD test -s /output/output.txt || exit 1 + +# Start +ENTRYPOINT ["sh", "-c"] CMD ["./deployment 10 > /output/output.txt && tail -f /output/output.txt"] \ No newline at end of file