37 lines
924 B
Docker
37 lines
924 B
Docker
# ---- 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"]
|