Tobias Niegratschka 725af0162e
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Dockerfile aktualisiert
2026-04-11 11:43:11 +00:00

43 lines
1.1 KiB
Docker

FROM debian:stable-slim AS builder
RUN apt-get update && apt-get install -y \
build-essential \
gcc \
&& rm -rf /var/lib/apt/lists/*
# Arbeitsverzeichnis für den Bau
WORKDIR /build
# Kopiere NUR die Quelldatei deployment.c
COPY deployment.c .
RUN gcc -o deployment deployment.c -static
FROM alpine:latest
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
# 2. Arbeitsverzeichnis und Mount-Point vorbereiten
WORKDIR /app
# Erstelle das /output Verzeichnis IM Container und übergebe die Rechte an appuser
RUN mkdir /output && chown appuser:appgroup /output
COPY --from=builder /build/deployment .
# Rechte anpassen
RUN chown appuser:appgroup deployment
# Wechsel zum Non-Root User
USER appuser
# 4. Datavolume definieren (Mount-Point)
VOLUME ["/output"]
# 5. HEALTHCHECK implementieren
# Wir prüfen alle 30s, ob die App überhaupt läuft.
HEALTHCHECK --interval=30s --timeout=5s --start-period=5s --retries=3 \
CMD pgrep deployment || exit 1
# Startbefehl anpassen (für sh statt bash, was in alpine standard ist)
ENTRYPOINT ["/bin/sh", "-c"]
CMD ["./deployment 10 > /output/output.txt && tail -f /output/output.txt"]