# Base-Image FROM alpine:3.22 AS builder # Pakete installieren RUN apk add --no-cache gcc musl-dev # Arbeitsverzeichnis setzen WORKDIR /app # alles kopieren COPY . . # Code kompilieren RUN gcc -O2 -o deployment deployment.c # Base-Image FROM alpine:3.22 # Arbeitsverzeichnis setzen WORKDIR /app # kompiliertes Programm kopieren COPY --from=builder /app/deployment /app/deployment # Verzeichnis für Ausgabe anlegen + User erstellen RUN addgroup -S appuser \ && adduser -S appuser -G appuser \ && mkdir /output \ && chown -R appuser:appuser /app /output # Datavolume für Ausgabe VOLUME ["/output"] # nicht als root laufen USER appuser # Healthcheck HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ CMD test -s /output/output.txt || exit 1 # Ausgabe wird ins Volume geschrieben ENTRYPOINT ["/bin/sh", "-c"] CMD ["touch /output/output.txt && ./deployment 10 >> /output/output.txt & tail -f /output/output.txt"]