32 lines
745 B
Docker
32 lines
745 B
Docker
# 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"]
|