Dockerfile changed according to task
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Johannes Meyer 2026-04-11 12:49:10 +00:00
parent 10fbaaaf8f
commit 1bfd977d6f

View File

@ -1,22 +1,55 @@
# Base-Image # Multi-Stage Build
FROM ubuntu:latest
# Pakete installieren # ============================================
RUN apt-get update # Build Stage
RUN apt-get install -y build-essential gcc curl vim net-tools # ============================================
FROM debian:bookworm-slim AS build
# Arbeitsverzeichnis setzen # Nur die benötigten Pakete installieren und danach Metadaten löschen die man nur für die INstallation braucht
RUN apt-get update \
&& apt-get install -y --no-install-recommends gcc libc6-dev \
&& rm -rf /var/lib/apt/lists/*
# WORKDIR setzen
WORKDIR /app WORKDIR /app
# alles kopieren # Source Code kopieren
COPY . . COPY . .
# Code kompilieren # Compile
RUN gcc -o deployment deployment.c RUN gcc -o deployment deployment.c
# Verzeichnis für Ausgabe anlegen # ============================================
RUN mkdir /output # Runtime Stage
# ============================================
FROM debian:bookworm-slim AS runtime
# Ausgabe wird ins Container-Dateisystem geschrieben # Curl für den HEALTHCHECK
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl \
&& rm -rf /var/lib/apt/lists/*
# Das output directory erstellen
RUN mkdir -p /output
# User ohne Root-Rechte erstellen
RUN useradd -m app
USER app
# Das Binary aus der Build-Stage kopieren
COPY --from=build /app/deployment /app/deployment
# WORKDIR setzen
WORKDIR /app
#output als Mount angeben
VOLUME ["/output"]
# Programm starten
ENTRYPOINT ["/bin/bash", "-c"] ENTRYPOINT ["/bin/bash", "-c"]
CMD ["./deployment 10 > /output/output.txt && tail -f /output/output.txt"] CMD ["./deployment 10 > /output/output.txt && tail -f /output/output.txt"]
# prüfen ob output.txt existiert und aktualisiert wird
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD test -f /output/output.txt && test $(find /output/output.txt -mmin -1) && echo "healthy" || exit 1