# First stage: Build the application FROM gradle:jdk22 AS builder WORKDIR /app # Copy only Gradle wrapper and configuration files first (for caching efficiency) COPY gradlew build.gradle.kts settings.gradle.kts ./ COPY gradle gradle # Give execute permissions to Gradle wrapper RUN chmod +x gradlew # Download dependencies first (improves caching) RUN ./gradlew dependencies # Copy the rest of the project files COPY src src # Build the application (skipping tests for faster build) RUN ./gradlew clean build -x test # Second stage: Run the application FROM openjdk:22-jdk-slim WORKDIR /app # Copy the built JAR from the first stage COPY --from=builder /app/build/libs/*.jar app.jar EXPOSE 8080 ENTRYPOINT ["java", "-jar", "app.jar"]