Skip to content

Commit

Permalink
feat: add support for java 21 and include jfr (#20)
Browse files Browse the repository at this point in the history
* feat: add support for java 21

* add scanning

* nit

* address comments
  • Loading branch information
Kishan Sairam Adapa authored Oct 2, 2023
1 parent 855dbd4 commit 7122824
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 16 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/pr-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ jobs:
category: java-11
output-mode: github

- name: Scan java-14 image
- name: Scan java-21 image
uses: hypertrace/github-actions/trivy-image-scan@main
with:
image: hypertrace/java
tag: 14
category: java-14
tag: 21
category: java-21
output-mode: github
11 changes: 7 additions & 4 deletions java-11/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ java.management,\
jdk.jdwp.agent,\
# JVM metrics such as garbage collection
jdk.management,\
# JFR for live monitoring, adds < 1MB to size
jdk.jfr,jdk.management.jfr,\
# prevents us from needing a different base layer for kafka-zookeeper
# ZooKeeper needs jdk.management.agent, and adding it is 900K vs 200M for a different base layer
jdk.management.agent,\
Expand All @@ -41,8 +43,8 @@ java.net.http,\
jdk.zipfs\
--output jre

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

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

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

COPY --from=deps /etc/ssl/certs/java /etc/ssl/certs/java
COPY --from=ssl /etc/ssl/certs/java /etc/ssl/certs/java

COPY --from=deps /lib/x86_64-linux-gnu/libz.so.1.2.11 /lib/x86_64-linux-gnu/libz.so.1.2.11
COPY --from=jre /lib/x86_64-linux-gnu/libz.so.1.2.11 /lib/x86_64-linux-gnu/libz.so.1.2.11
RUN ln -s /lib/x86_64-linux-gnu/libz.so.1.2.11 /lib/x86_64-linux-gnu/libz.so.1

COPY --from=jre /jre /usr/lib/jvm/zulu-11-amd64-slim
RUN ln -s /usr/lib/jvm/zulu-11-amd64-slim/bin/java /usr/bin/java
RUN ln -s /usr/lib/jvm/zulu-11-amd64-slim/bin/jfr /usr/bin/jfr

# change rocksdb default memory allocator
# https://docs.confluent.io/platform/current/streams/developer-guide/memory-mgmt.html#rocksdb
Expand Down
26 changes: 19 additions & 7 deletions java-14/Dockerfile → java-21/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ java.management,\
jdk.jdwp.agent,\
# JVM metrics such as garbage collection
jdk.management,\
# JFR for live monitoring, adds < 1MB to size
jdk.jfr,jdk.management.jfr,\
# prevents us from needing a different base layer for kafka-zookeeper
# ZooKeeper needs jdk.management.agent, and adding it is 900K vs 200M for a different base layer
jdk.management.agent,\
Expand All @@ -41,9 +43,13 @@ java.net.http,\
jdk.zipfs\
--output jre

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

FROM amd64/debian:bookworm-slim As builder
RUN apt update && apt install -y libjemalloc-dev

# Debian-12 image
FROM gcr.io/distroless/cc-debian12:debug

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

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

COPY --from=deps /etc/ssl/certs/java /etc/ssl/certs/java
COPY --from=ssl /etc/ssl/certs/java /etc/ssl/certs/java

COPY --from=deps /lib/x86_64-linux-gnu/libz.so.1.2.11 /lib/x86_64-linux-gnu/libz.so.1.2.11
COPY --from=jre /lib/x86_64-linux-gnu/libz.so.1.2.11 /lib/x86_64-linux-gnu/libz.so.1.2.11
RUN ln -s /lib/x86_64-linux-gnu/libz.so.1.2.11 /lib/x86_64-linux-gnu/libz.so.1

COPY --from=jre /jre /usr/lib/jvm/zulu-14-amd64-slim
RUN ln -s /usr/lib/jvm/zulu-14-amd64-slim/bin/java /usr/bin/java
COPY --from=jre /jre /usr/lib/jvm/zulu-21-amd64-slim
RUN ln -s /usr/lib/jvm/zulu-21-amd64-slim/bin/java /usr/bin/java
RUN ln -s /usr/lib/jvm/zulu-21-amd64-slim/bin/jfr /usr/bin/jfr

# change rocksdb default memory allocator
# https://docs.confluent.io/platform/current/streams/developer-guide/memory-mgmt.html#rocksdb
COPY --from=builder /usr/lib/x86_64-linux-gnu/libjemalloc* /usr/lib/x86_64-linux-gnu/
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so

# set JAVA_HOME
ENV JAVA_HOME=/usr/lib/jvm/zulu-14-amd64-slim
ENV JAVA_HOME=/usr/lib/jvm/zulu-21-amd64-slim

ENTRYPOINT ["/usr/bin/java", "-jar"]
2 changes: 1 addition & 1 deletion java-14/build.gradle.kts → java-21/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ plugins {
id("org.hypertrace.docker-publish-plugin")
}

var javaVersion = "14.0.2-14.29.23"
var javaVersion = "21.0.0-21.28.85"

hypertraceDocker {
defaultImage {
Expand Down
2 changes: 1 addition & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ pluginManagement {
}

include(":java-11")
include(":java-14")
include(":java-21")

0 comments on commit 7122824

Please sign in to comment.