# ── Stage 1: Build ─────────────────────────────────────────────────────────── FROM gradle:8-jdk21-alpine AS build WORKDIR /app COPY build.gradle.kts settings.gradle.kts ./ COPY gradle gradle COPY gradlew ./ # Download dependencies first (layer cache) RUN ./gradlew dependencies --no-daemon || true COPY src src RUN ./gradlew bootJar --no-daemon # ── Stage 2: Runtime ───────────────────────────────────────────────────────── FROM eclipse-temurin:21-jre-alpine AS runtime WORKDIR /app COPY --from=build /app/build/libs/*.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"]