forked from freudenreichan/EinfuehrungInDocker_Pipeline2
This commit is contained in:
parent
0d85c95672
commit
8c7f2f174d
10
Dockerfile
10
Dockerfile
@ -1,40 +1,30 @@
|
||||
FROM alpine:latest
|
||||
|
||||
# Nur notwendige Build-Tools installieren + sofort aufräumen
|
||||
RUN apk add --no-cache build-base && \
|
||||
rm -rf /var/cache/apk/*
|
||||
|
||||
# Non-root User + Gruppe anlegen (hohe UID/GID für bessere Security)
|
||||
RUN addgroup -S -g 10001 appgroup && \
|
||||
adduser -S -u 10001 -G appgroup -h /app -s /bin/sh appuser
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Quellcode als root kopieren (COPY --chown funktioniert zuverlässig)
|
||||
COPY --chown=appuser:appgroup . .
|
||||
|
||||
# Als non-root User kompilieren
|
||||
USER appuser
|
||||
RUN gcc -o deployment deployment.c -O2 -static # -static macht das Binary robuster
|
||||
|
||||
# ← WICHTIG: Hier wieder zurück zu root, um /output zu erstellen + chown
|
||||
USER root
|
||||
|
||||
# Ausgabe-Verzeichnis als root anlegen und dem appuser geben
|
||||
RUN mkdir -p /output && \
|
||||
chown -R appuser:appgroup /output && \
|
||||
chmod 755 /output
|
||||
|
||||
# HEALTHCHECK (läuft als root – das ist bei HEALTHCHECK erlaubt und empfohlen)
|
||||
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
||||
CMD pgrep -x deployment > /dev/null || exit 1
|
||||
|
||||
# Volume deklarieren (wird beim Start mit -v gemountet)
|
||||
VOLUME ["/output"]
|
||||
|
||||
# Endgültig als non-root User starten
|
||||
USER appuser
|
||||
|
||||
# Startbefehl
|
||||
ENTRYPOINT ["/bin/sh", "-c"]
|
||||
CMD ["./deployment 10 > /output/output.txt 2>&1 && exec tail -f /output/output.txt"]
|
||||
Loading…
x
Reference in New Issue
Block a user