Skip to content

Commit 6aae656

Browse files
authored
Merge pull request #1 from hypertrace/java-base-images
Add docker jre images for java 11 and 14
2 parents 23ce83a + eb060aa commit 6aae656

File tree

9 files changed

+148
-46
lines changed

9 files changed

+148
-46
lines changed

.circleci/config.yml

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,6 @@ jobs:
5353
executor: gradle_docker
5454
steps:
5555
- setup_build_environment
56-
- gradle:
57-
args: :tag -Prelease
58-
- add_ssh_keys:
59-
fingerprints:
60-
- '9f:bb:a7:39:fa:3d:39:04:bd:c6:66:27:79:b1:49:86'
61-
- run: git push origin $(./gradlew -q :printVersion)
6256
- gradle:
6357
args: dockerPushImages
6458

@@ -67,11 +61,11 @@ workflows:
6761
build-and-publish:
6862
jobs:
6963
- build
70-
# - publish:
71-
# context: hypertrace-publishing
72-
# requires:
73-
# - build
74-
# filters:
75-
# branches:
76-
# only:
77-
# - main
64+
- publish:
65+
context: hypertrace-publishing
66+
requires:
67+
- build
68+
filters:
69+
branches:
70+
only:
71+
- main

java-11/Dockerfile

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,57 @@
1-
FROM gcr.io/distroless/java:11-debug
1+
ARG JAVA_VERSION
2+
FROM azul/zulu-openjdk-debian:${JAVA_VERSION} AS jre
3+
4+
# Needed for --strip-debug
5+
RUN apt-get -y update && apt-get -y install binutils
6+
7+
# Included modules cherrypicked from https://docs.oracle.com/en/java/javase/11/docs/api/
8+
#
9+
# jdk.unsupported is undocumented but contains Unsafe, which is used by several dependencies to
10+
# improve performance.
11+
RUN cd / && jlink --no-header-files --no-man-pages --compress=0 --strip-debug \
12+
--add-modules java.base,java.logging,\
13+
# java.desktop includes java.beans which is used by Spring
14+
java.desktop,\
15+
java.sql,\
16+
# instrumentation
17+
java.instrument,\
18+
# we don't use JMX, but log4j2 errors without it: LOG4J2-716
19+
java.management,\
20+
# remote debug
21+
jdk.jdwp.agent,\
22+
# JVM metrics such as garbage collection
23+
jdk.management,\
24+
# prevents us from needing a different base layer for kafka-zookeeper
25+
# ZooKeeper needs jdk.management.agent, and adding it is 900K vs 200M for a different base layer
26+
jdk.management.agent,\
27+
# non-netty based DNS
28+
java.naming,jdk.naming.dns,\
29+
# TLS handehake with servers that use elliptic curve certificates
30+
jdk.crypto.ec,\
31+
# sun.misc.Unsafe and friends
32+
jdk.unsupported\
33+
--output jre
34+
35+
# We extract JRE's hard dependencies, libz and SSL certs, from the fat JRE image.
36+
FROM gcr.io/distroless/java:11-debug AS deps
37+
38+
FROM gcr.io/distroless/cc:debug
39+
40+
MAINTAINER Hypertrace "https://www.hypertrace.org/"
41+
42+
SHELL ["/busybox/sh", "-c"]
43+
44+
RUN ln -s /busybox/sh /bin/sh
45+
46+
COPY --from=deps /etc/ssl/certs/java /etc/ssl/certs/java
47+
48+
COPY --from=deps /lib/x86_64-linux-gnu/libz.so.1.2.8 /lib/x86_64-linux-gnu/libz.so.1.2.8
49+
RUN ln -s /lib/x86_64-linux-gnu/libz.so.1.2.8 /lib/x86_64-linux-gnu/libz.so.1
50+
51+
COPY --from=jre /jre /usr/lib/jvm/zulu-11-amd64-slim
52+
RUN ln -s /usr/lib/jvm/zulu-11-amd64-slim/bin/java /usr/bin/java
53+
54+
# set JAVA_HOME
55+
ENV JAVA_HOME=/usr/lib/jvm/zulu-11-amd64-slim
56+
57+
ENTRYPOINT ["/usr/bin/java", "-jar"]

java-11/build.gradle.kts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,15 @@ plugins {
22
id("org.hypertrace.docker-publish-plugin")
33
}
44

5+
var javaVersion = "11.0.8-11.41.23"
6+
57
hypertraceDocker {
68
defaultImage {
79
imageName.set("java")
8-
setTagNameTransform { tag -> "11-${tag.name}" }
10+
buildArgs.put("JAVA_VERSION", javaVersion)
11+
tags.forEach { it.onlyIf { false } }
12+
tag(javaVersion)
13+
tag(javaVersion.split('-')[0])
14+
tag(javaVersion.split('.')[0])
915
}
10-
}
16+
}

java-14/Dockerfile

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
ARG JAVA_VERSION
2+
FROM azul/zulu-openjdk-debian:${JAVA_VERSION} AS jre
3+
4+
# Needed for --strip-debug
5+
RUN apt-get -y update && apt-get -y install binutils
6+
7+
# Included modules cherrypicked from https://docs.oracle.com/en/java/javase/11/docs/api/
8+
#
9+
# jdk.unsupported is undocumented but contains Unsafe, which is used by several dependencies to
10+
# improve performance.
11+
RUN cd / && jlink --no-header-files --no-man-pages --compress=0 --strip-debug \
12+
--add-modules java.base,java.logging,\
13+
# java.desktop includes java.beans which is used by Spring
14+
java.desktop,\
15+
java.sql,\
16+
# instrumentation
17+
java.instrument,\
18+
# we don't use JMX, but log4j2 errors without it: LOG4J2-716
19+
java.management,\
20+
# remote debug
21+
jdk.jdwp.agent,\
22+
# JVM metrics such as garbage collection
23+
jdk.management,\
24+
# prevents us from needing a different base layer for kafka-zookeeper
25+
# ZooKeeper needs jdk.management.agent, and adding it is 900K vs 200M for a different base layer
26+
jdk.management.agent,\
27+
# non-netty based DNS
28+
java.naming,jdk.naming.dns,\
29+
# TLS handehake with servers that use elliptic curve certificates
30+
jdk.crypto.ec,\
31+
# sun.misc.Unsafe and friends
32+
jdk.unsupported\
33+
--output jre
34+
35+
# We extract JRE's hard dependencies, libz and SSL certs, from the fat JRE image.
36+
FROM gcr.io/distroless/java:11-debug AS deps
37+
38+
FROM gcr.io/distroless/cc:debug
39+
40+
MAINTAINER Hypertrace "https://www.hypertrace.org/"
41+
42+
SHELL ["/busybox/sh", "-c"]
43+
44+
RUN ln -s /busybox/sh /bin/sh
45+
46+
COPY --from=deps /etc/ssl/certs/java /etc/ssl/certs/java
47+
48+
COPY --from=deps /lib/x86_64-linux-gnu/libz.so.1.2.8 /lib/x86_64-linux-gnu/libz.so.1.2.8
49+
RUN ln -s /lib/x86_64-linux-gnu/libz.so.1.2.8 /lib/x86_64-linux-gnu/libz.so.1
50+
51+
COPY --from=jre /jre /usr/lib/jvm/zulu-14-amd64-slim
52+
RUN ln -s /usr/lib/jvm/zulu-14-amd64-slim/bin/java /usr/bin/java
53+
54+
# set JAVA_HOME
55+
ENV JAVA_HOME=/usr/lib/jvm/zulu-14-amd64-slim
56+
57+
ENTRYPOINT ["/usr/bin/java", "-jar"]

java-14/build.gradle.kts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
plugins {
2+
id("org.hypertrace.docker-publish-plugin")
3+
}
4+
5+
var javaVersion = "14.0.2-14.29.23"
6+
7+
hypertraceDocker {
8+
defaultImage {
9+
imageName.set("java")
10+
buildArgs.put("JAVA_VERSION", javaVersion)
11+
tags.forEach { it.onlyIf { false } }
12+
tag(javaVersion)
13+
tag(javaVersion.split('-')[0])
14+
tag(javaVersion.split('.')[0])
15+
}
16+
}

java-8/Dockerfile

Lines changed: 0 additions & 1 deletion
This file was deleted.

java-8/build.gradle.kts

Lines changed: 0 additions & 10 deletions
This file was deleted.

semantic-build-versioning.gradle

Lines changed: 0 additions & 11 deletions
This file was deleted.

settings.gradle.kts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,5 @@ pluginManagement {
66
}
77
}
88

9-
plugins {
10-
id("org.hypertrace.version-settings") version "0.1.5"
11-
}
12-
13-
14-
include(":java-8")
15-
include(":java-11")
9+
include(":java-11")
10+
include(":java-14")

0 commit comments

Comments
 (0)