# Multi-stage build for Spring Boot application FROM eclipse-temurin:21-jre-alpine AS builder WORKDIR /app COPY build/libs/*.jar app.jar RUN java -Djarmode=layertools -jar app.jar extract FROM eclipse-temurin:21-jre-alpine WORKDIR /app # Create non-root user RUN addgroup -S spring && adduser -S spring -G spring USER spring:spring # Copy layers from builder COPY --from=builder /app/dependencies/ ./ COPY --from=builder /app/spring-boot-loader/ ./ COPY --from=builder /app/snapshot-dependencies/ ./ COPY --from=builder /app/application/ ./ # Health check HEALTHCHECK --interval=30s --timeout=3s --start-period=60s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:8080/api/v1/events/actuator/health || exit 1 ENTRYPOINT ["java", "org.springframework.boot.loader.launch.JarLauncher"]