# ---- 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"]
