FROM eclipse-temurin:21-jdk AS builder WORKDIR /app # Copy wrapper and POM first — dependency layer is cached separately from source COPY .mvn .mvn COPY mvnw pom.xml ./ RUN --mount=type=cache,target=/root/.m2 ./mvnw dependency:go-offline -q COPY src ./src RUN --mount=type=cache,target=/root/.m2 ./mvnw clean package -DskipTests -q FROM eclipse-temurin:21-jre WORKDIR /app COPY --from=builder /app/target/*.jar app.jar EXPOSE 8080 CMD ["java", "-jar", "app.jar"]