da-policyengine-dev / src /main /docker /Dockerfile.layered
dalabai's picture
Upload folder using huggingface_hub
9373c61 verified
raw
history blame
1.11 kB
# 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"]