Spaces:
Build error
Build error
| # Ultra-optimized layered build using Distroless | |
| # Expected size: ~180-220MB with better caching | |
| FROM gcr.io/distroless/java21-debian12:nonroot as base | |
| # Stage 1: Extract JAR layers for optimal caching | |
| FROM eclipse-temurin:21-jdk-alpine as extractor | |
| WORKDIR /app | |
| COPY build/libs/*.jar app.jar | |
| RUN java -Djarmode=layertools -jar app.jar extract | |
| # Stage 2: Production image with extracted layers | |
| FROM base | |
| WORKDIR /app | |
| # Copy layers in dependency order (best caching) | |
| COPY --from=extractor /app/dependencies/ ./ | |
| COPY --from=extractor /app/spring-boot-loader/ ./ | |
| COPY --from=extractor /app/snapshot-dependencies/ ./ | |
| COPY --from=extractor /app/application/ ./ | |
| EXPOSE 8080 | |
| # Optimized JVM settings for micro-containers | |
| ENTRYPOINT ["java", \ | |
| "-XX:+UseContainerSupport", \ | |
| "-XX:MaxRAMPercentage=70.0", \ | |
| "-XX:+UseG1GC", \ | |
| "-XX:+UseStringDeduplication", \ | |
| "-XX:+CompactStrings", \ | |
| "-Xshare:on", \ | |
| "-Djava.security.egd=file:/dev/./urandom", \ | |
| "-Dspring.backgroundpreinitializer.ignore=true", \ | |
| "org.springframework.boot.loader.JarLauncher"] | |