Skip to content

Commit 7122824

Browse files
author
Kishan Sairam Adapa
authored
feat: add support for java 21 and include jfr (#20)
* feat: add support for java 21 * add scanning * nit * address comments
1 parent 855dbd4 commit 7122824

File tree

5 files changed

+31
-16
lines changed

5 files changed

+31
-16
lines changed

.github/workflows/pr-build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,10 @@ jobs:
3636
category: java-11
3737
output-mode: github
3838

39-
- name: Scan java-14 image
39+
- name: Scan java-21 image
4040
uses: hypertrace/github-actions/trivy-image-scan@main
4141
with:
4242
image: hypertrace/java
43-
tag: 14
44-
category: java-14
43+
tag: 21
44+
category: java-21
4545
output-mode: github

java-11/Dockerfile

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ java.management,\
2121
jdk.jdwp.agent,\
2222
# JVM metrics such as garbage collection
2323
jdk.management,\
24+
# JFR for live monitoring, adds < 1MB to size
25+
jdk.jfr,jdk.management.jfr,\
2426
# prevents us from needing a different base layer for kafka-zookeeper
2527
# ZooKeeper needs jdk.management.agent, and adding it is 900K vs 200M for a different base layer
2628
jdk.management.agent,\
@@ -41,8 +43,8 @@ java.net.http,\
4143
jdk.zipfs\
4244
--output jre
4345

44-
# We extract JRE's hard dependencies, libz and SSL certs, from the fat JRE image.
45-
FROM gcr.io/distroless/java:11-debug AS deps
46+
# Extract java SSL certs
47+
FROM gcr.io/distroless/java-base-debian12:debug AS ssl
4648

4749
FROM amd64/debian:bookworm-slim As builder
4850
RUN apt update && apt install -y libjemalloc-dev
@@ -56,13 +58,14 @@ SHELL ["/busybox/sh", "-c"]
5658

5759
RUN ln -s /busybox/sh /bin/sh
5860

59-
COPY --from=deps /etc/ssl/certs/java /etc/ssl/certs/java
61+
COPY --from=ssl /etc/ssl/certs/java /etc/ssl/certs/java
6062

61-
COPY --from=deps /lib/x86_64-linux-gnu/libz.so.1.2.11 /lib/x86_64-linux-gnu/libz.so.1.2.11
63+
COPY --from=jre /lib/x86_64-linux-gnu/libz.so.1.2.11 /lib/x86_64-linux-gnu/libz.so.1.2.11
6264
RUN ln -s /lib/x86_64-linux-gnu/libz.so.1.2.11 /lib/x86_64-linux-gnu/libz.so.1
6365

6466
COPY --from=jre /jre /usr/lib/jvm/zulu-11-amd64-slim
6567
RUN ln -s /usr/lib/jvm/zulu-11-amd64-slim/bin/java /usr/bin/java
68+
RUN ln -s /usr/lib/jvm/zulu-11-amd64-slim/bin/jfr /usr/bin/jfr
6669

6770
# change rocksdb default memory allocator
6871
# https://docs.confluent.io/platform/current/streams/developer-guide/memory-mgmt.html#rocksdb

java-14/Dockerfile renamed to java-21/Dockerfile

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ java.management,\
2121
jdk.jdwp.agent,\
2222
# JVM metrics such as garbage collection
2323
jdk.management,\
24+
# JFR for live monitoring, adds < 1MB to size
25+
jdk.jfr,jdk.management.jfr,\
2426
# prevents us from needing a different base layer for kafka-zookeeper
2527
# ZooKeeper needs jdk.management.agent, and adding it is 900K vs 200M for a different base layer
2628
jdk.management.agent,\
@@ -41,9 +43,13 @@ java.net.http,\
4143
jdk.zipfs\
4244
--output jre
4345

44-
# We extract JRE's hard dependencies, libz and SSL certs, from the fat JRE image.
45-
FROM gcr.io/distroless/java:11-debug AS deps
46+
# Extract java SSL certs
47+
FROM gcr.io/distroless/java-base-debian12:debug AS ssl
4648

49+
FROM amd64/debian:bookworm-slim As builder
50+
RUN apt update && apt install -y libjemalloc-dev
51+
52+
# Debian-12 image
4753
FROM gcr.io/distroless/cc-debian12:debug
4854

4955
MAINTAINER Hypertrace "https://www.hypertrace.org/"
@@ -52,15 +58,21 @@ SHELL ["/busybox/sh", "-c"]
5258

5359
RUN ln -s /busybox/sh /bin/sh
5460

55-
COPY --from=deps /etc/ssl/certs/java /etc/ssl/certs/java
61+
COPY --from=ssl /etc/ssl/certs/java /etc/ssl/certs/java
5662

57-
COPY --from=deps /lib/x86_64-linux-gnu/libz.so.1.2.11 /lib/x86_64-linux-gnu/libz.so.1.2.11
63+
COPY --from=jre /lib/x86_64-linux-gnu/libz.so.1.2.11 /lib/x86_64-linux-gnu/libz.so.1.2.11
5864
RUN ln -s /lib/x86_64-linux-gnu/libz.so.1.2.11 /lib/x86_64-linux-gnu/libz.so.1
5965

60-
COPY --from=jre /jre /usr/lib/jvm/zulu-14-amd64-slim
61-
RUN ln -s /usr/lib/jvm/zulu-14-amd64-slim/bin/java /usr/bin/java
66+
COPY --from=jre /jre /usr/lib/jvm/zulu-21-amd64-slim
67+
RUN ln -s /usr/lib/jvm/zulu-21-amd64-slim/bin/java /usr/bin/java
68+
RUN ln -s /usr/lib/jvm/zulu-21-amd64-slim/bin/jfr /usr/bin/jfr
69+
70+
# change rocksdb default memory allocator
71+
# https://docs.confluent.io/platform/current/streams/developer-guide/memory-mgmt.html#rocksdb
72+
COPY --from=builder /usr/lib/x86_64-linux-gnu/libjemalloc* /usr/lib/x86_64-linux-gnu/
73+
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so
6274

6375
# set JAVA_HOME
64-
ENV JAVA_HOME=/usr/lib/jvm/zulu-14-amd64-slim
76+
ENV JAVA_HOME=/usr/lib/jvm/zulu-21-amd64-slim
6577

6678
ENTRYPOINT ["/usr/bin/java", "-jar"]

java-14/build.gradle.kts renamed to java-21/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ plugins {
22
id("org.hypertrace.docker-publish-plugin")
33
}
44

5-
var javaVersion = "14.0.2-14.29.23"
5+
var javaVersion = "21.0.0-21.28.85"
66

77
hypertraceDocker {
88
defaultImage {

settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ pluginManagement {
77
}
88

99
include(":java-11")
10-
include(":java-14")
10+
include(":java-21")

0 commit comments

Comments
 (0)