da-policyengine-dev / src /main /docker /Dockerfile.alpine-jlink
dalabai's picture
Upload folder using huggingface_hub
9373c61 verified
raw
history blame
1.21 kB
# Ultra-minimal Alpine + Custom JRE
# Expected size: ~120-160MB
# Stage 1: Create custom JRE with only needed modules
FROM eclipse-temurin:21-jdk-alpine as jre-builder
WORKDIR /app
# Analyze JAR to find required modules
COPY build/libs/*.jar app.jar
RUN jdeps --ignore-missing-deps --print-module-deps app.jar > modules.txt
# Create minimal JRE with only required modules
RUN jlink \
--add-modules $(cat modules.txt),java.logging,java.xml,java.sql,java.naming,java.desktop,java.management,java.security.jgss,java.instrument \
--strip-debug \
--no-man-pages \
--no-header-files \
--compress=2 \
--output /custom-jre
# Stage 2: Production image
FROM alpine:3.19
RUN apk add --no-cache tzdata && \
addgroup -g 1001 -S appgroup && \
adduser -u 1001 -S appuser -G appgroup
# Copy custom JRE
COPY --from=jre-builder /custom-jre /opt/java
ENV JAVA_HOME=/opt/java
ENV PATH="$JAVA_HOME/bin:$PATH"
WORKDIR /app
COPY build/libs/*.jar app.jar
RUN chown appuser:appgroup app.jar
USER appuser
EXPOSE 8080
ENTRYPOINT ["java", \
"-XX:+UseContainerSupport", \
"-XX:MaxRAMPercentage=70.0", \
"-XX:+UseG1GC", \
"-jar", "app.jar"]