# ---- Build Stage ---- FROM maven:3.9-eclipse-temurin-21 AS build WORKDIR /app # Dependency-Layer cachen: erst pom.xml auflösen, dann erst den Quellcode kopieren. COPY pom.xml . RUN mvn -q dependency:go-offline COPY src ./src # Tests laufen im Build mit – ein roter Test stoppt das Image (CI-Teststufe inklusive). RUN mvn -q package # ---- Runtime Stage ---- FROM eclipse-temurin:21-jre # curl für den Container-Healthcheck (siehe docker-compose.yml) RUN apt-get update \ && apt-get install -y --no-install-recommends curl \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # Nicht als root laufen; Upload-Verzeichnis für den App-User beschreibbar machen. RUN useradd --system --home /app --shell /usr/sbin/nologin mindflux \ && mkdir -p /app/uploads \ && chown -R mindflux:mindflux /app COPY --from=build /app/target/*.jar app.jar USER mindflux EXPOSE 8080 ENTRYPOINT ["java","-jar","app.jar"]