# Base-Image FROM alpine:latest # Pakete installieren (alpine nutzt apk anstelle von apt-get!) RUN apk update && apk add --no-cache build-base gcc curl vim net-tools # Arbeitsverzeichnis setzen WORKDIR /app # alles kopieren COPY . . # Code kompilieren RUN gcc -o deployment deployment.c # Verzeichnis für Ausgabe anlegen RUN mkdir /output # Neuen nicht root-user anlegen und diesem die Rechte # fuer die Arbeitsverzeichnisse geben RUN addgroup -S newgroup && adduser -S newuser -G newgroup RUN chown -R newuser:newgroup /app /output # Benutzer wechseln USER newuser # Mount-Punkt fuer Laufzeit festlegen VOLUME /output # Healthcheck anlegen # - prueft alle 10s ob die Datei output.txt erfolgreich erstellt wurde # - wenn 'test -f' fehlschlaegt, wird der Container als 'unhealthy' markiert HEALTHCHECK --interval=10s --timeout=3s CMD test -f /output/output.txt || exit 1 # Ausgabe wird ins Container-Dateisystem geschrieben ENTRYPOINT ["/bin/sh", "-c"] CMD ["./deployment 10 > /output/output.txt && tail -f /output/output.txt"]