@@ -20,48 +20,33 @@ RUN apk --no-cache add openjdk21-jdk openjdk21-jmods
20
20
21
21
ENV JAVA_MINIMAL="/opt/java-minimal"
22
22
23
- # TODO: running jdeps does not work with spring-boot 2.5 or later.
24
- # TODO: Still not working with Java 21
25
- # FROM staging_area as builder
26
23
# prepare dependencies for jdeps/jlink
27
- # COPY ./target/s3mock-exec.jar s3mock.jar
24
+ COPY ./target/s3mock-exec.jar s3mock.jar
28
25
# Spring Boot uses fat JARs, jdeps can't read them. Need to unpack JAR before running jdeps
29
- # ENV TMP_DIR="/tmp/app-jar"
30
- # RUN mkdir -p ${TMP_DIR}
31
- # RUN unzip -q s3mock.jar -d "${TMP_DIR}"
26
+ ENV TMP_DIR="/tmp/app-jar"
27
+ RUN mkdir -p ${TMP_DIR}
28
+ RUN unzip -q s3mock.jar -d "${TMP_DIR}"
32
29
33
- # # find JDK dependencies dynamically from unpacked jar
34
- # RUN jdeps \
35
- # # dont worry about missing modules
36
- # --ignore-missing-deps \
37
- # # suppress any warnings printed to console
38
- # -q \
39
- # # java release version targeting
40
- # --multi-release 17 \
41
- # # output the dependencies at end of run
42
- # --print-module-deps \
43
- # --recursive \
44
- # # specify the the dependencies for the jar
45
- # --class-path ${TMP_DIR}/BOOT-INF/lib/* ${TMP_DIR}/BOOT-INF/classes ${TMP_DIR} \
46
- # # pipe the result of running jdeps on the app jar to file
47
- # ${TMP_DIR}/org ${TMP_DIR}/BOOT-INF/classes ${TMP_DIR}/BOOT-INF/lib/*.jar > jre-deps.info \
48
- #
49
- # # build minimal JRE
50
- # RUN jlink \
51
- # --verbose \
52
- # --add-modules $(cat jre-deps.info) \
53
- # --compress 2 \
54
- # --no-header-files \
55
- # --no-man-pages \
56
- # --strip-java-debug-attributes \
57
- # --output "$JAVA_MINIMAL"
30
+ # find JDK dependencies dynamically from unpacked jar
31
+ RUN jdeps \
32
+ # don't worry about missing modules
33
+ --ignore-missing-deps \
34
+ # suppress any warnings printed to console
35
+ -q \
36
+ # java release version targeting
37
+ --multi-release 21 \
38
+ # output the dependencies at end of run
39
+ --print-module-deps \
40
+ --recursive \
41
+ # specify the the dependencies for the jar
42
+ --class-path "${TMP_DIR}/BOOT-INF/lib/*:${TMP_DIR}/BOOT-INF/classes:${TMP_DIR}" \
43
+ # pipe the result of running jdeps on the app jar to file
44
+ ${TMP_DIR}/org ${TMP_DIR}/BOOT-INF/classes ${TMP_DIR}/BOOT-INF/lib/*.jar > jre-deps.info
58
45
59
- # TODO: creating "static" minimal JRE here. Activate jdeps again later
60
- # create a minimal jdk assembly with those modules that we need
46
+ # build minimal JRE
61
47
RUN jlink \
62
- --module-path "$JAVA_HOME" /jmods \
63
48
--verbose \
64
- --add-modules java.base,java.logging,java.xml,jdk.unsupported,java.sql,java.naming,java.desktop,java.management,java.security.jgss,java.instrument ,jdk.crypto.ec \
49
+ --add-modules $(cat jre-deps.info) ,jdk.crypto.ec \
65
50
--compress 2 \
66
51
--no-header-files \
67
52
--no-man-pages \
@@ -73,8 +58,6 @@ FROM alpine:3.22.0@sha256:8a1f59ffb675680d47db6337b49d22281a139e9d709335b492be02
73
58
ENV JAVA_HOME=/opt/java-minimal
74
59
ENV PATH="$PATH:$JAVA_HOME/bin"
75
60
76
- # TODO: activate copy from builder stage when jdeps works again...
77
- # COPY --from=builder "$JAVA_HOME" "$JAVA_HOME"
78
61
COPY --from=staging_area "$JAVA_HOME" "$JAVA_HOME"
79
62
COPY ./target/s3mock-exec.jar s3mock.jar
80
63
0 commit comments