# Multi-stage Dockerfile — Chapter 14
FROM gradle:8.11-jdk21 AS builder
WORKDIR /build
COPY settings.gradle.kts build.gradle.kts gradlew ./
COPY gradle/ gradle/
RUN gradle dependencies --no-daemon 2>/dev/null || true
COPY src/ src/
RUN gradle buildFatJar --no-daemon

FROM eclipse-temurin:21-jre-alpine
RUN addgroup -S kontactbook && adduser -S kontactbook -G kontactbook
WORKDIR /app
COPY --from=builder /build/build/libs/kontactbook.jar ./app.jar
RUN chown -R kontactbook:kontactbook /app
USER kontactbook
EXPOSE 8080
HEALTHCHECK --interval=15s --timeout=5s --start-period=30s --retries=3 \
    CMD wget -qO- http://localhost:8080/health || exit 1
ENV JAVA_OPTS="-XX:+UseContainerSupport -XX:MaxRAMPercentage=75.0 -Xms64m -XX:+ExitOnOutOfMemoryError"
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]
