# Multi-Stage-Build builder # Extract layers from application to minimize image size FROM adoptopenjdk/openjdk11:alpine-slim AS builder WORKDIR application ARG JAR_FILE=target/*.jar COPY ${JAR_FILE} application.jar RUN java -Djarmode=layertools -jar application.jar extract # Build the actual image FROM adoptopenjdk/openjdk11:alpine-slim WORKDIR /application COPY --from=builder application/dependencies/ ./ COPY --from=builder application/spring-boot-loader/ ./ COPY --from=builder application/snapshot-dependencies/ ./ COPY --from=builder application/application/ ./ EXPOSE 8080 ENV JAVA_OPTIONS="" HEALTHCHECK --interval=30s --timeout=30s --retries=3 \ CMD wget --no-verbose --spider http://localhost:8080/actuator/health || exit 1 CMD ["java", "org.springframework.boot.loader.JarLauncher", "-XX:+UseSerialGC", "-XX:MaxRAM=256m", "${JAVA_OPTIONS}" ]