3
3
# Intermediate image used to prune cruft from JDKs and squash them all.
4
4
FROM ubuntu:latest AS all-jdk
5
5
6
+ RUN <<-EOT
7
+ set -eux
8
+ apt-get update
9
+ apt-get install -y sudo
10
+ groupadd --gid 1001 non-root-group
11
+ useradd --uid 1001 --gid non-root-group -m non-root-user
12
+ echo "non-root-user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/non-root-user
13
+ chmod 0440 /etc/sudoers.d/non-root-user
14
+ mkdir -p /home/non-root-user/.config
15
+ chown -R non-root-user:non-root-group /home/non-root-user/.config
16
+ sudo apt-get clean
17
+ sudo rm -rf /var/lib/apt/lists/*
18
+ EOT
19
+
20
+ USER non-root-user
21
+ WORKDIR /home/non-root-user
22
+
23
+ RUN <<-EOT
24
+ set -eux
25
+ sudo apt-get update
26
+ sudo apt-get install -y curl tar apt-transport-https ca-certificates gnupg locales jq git gh
27
+ sudo locale-gen en_US.UTF-8
28
+ sudo git config --system --add safe.directory "*"
29
+ sudo apt-get clean
30
+ sudo rm -rf /var/lib/apt/lists/*
31
+ EOT
32
+
33
+ ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
34
+
6
35
COPY --from=eclipse-temurin:8-jdk-jammy /opt/java/openjdk /usr/lib/jvm/8
7
36
COPY --from=eclipse-temurin:11-jdk-jammy /opt/java/openjdk /usr/lib/jvm/11
8
37
COPY --from=eclipse-temurin:17-jdk-jammy /opt/java/openjdk /usr/lib/jvm/17
@@ -21,58 +50,38 @@ COPY --from=ibm-semeru-runtimes:open-17-jdk-jammy /opt/java/openjdk /usr/lib/jvm
21
50
COPY --from=ghcr.io/graalvm/native-image-community:17-ol9 /usr/lib64/graalvm/graalvm-community-java17 /usr/lib/jvm/graalvm17
22
51
COPY --from=ghcr.io/graalvm/native-image-community:21-ol9 /usr/lib64/graalvm/graalvm-community-java21 /usr/lib/jvm/graalvm21
23
52
24
- RUN <<-EOT
25
- set -eux
26
- apt-get update
27
- apt-get install -y curl tar apt-transport-https ca-certificates gnupg locales jq git gh
28
- locale-gen en_US.UTF-8
29
- groupadd --gid 1001 non-root-group
30
- useradd --uid 1001 --gid non-root-group -m non-root-user
31
- mkdir -p /home/non-root-user/.config
32
- git config --system --add safe.directory '*'
33
- chown -R non-root-user:non-root-group /home/non-root-user/.config
34
- apt-get clean
35
- rm -rf /var/lib/apt/lists/*
36
- EOT
37
-
38
- ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
39
-
40
53
# See: https://gist.github.com/wavezhang/ba8425f24a968ec9b2a8619d7c2d86a6
41
54
RUN <<-EOT
42
55
set -eux
43
- mkdir -p /usr/lib/jvm/oracle8
44
- curl -L --fail "https://javadl.oracle.com/webapps/download/AutoDL?BundleId=252034_8a1589aa0fe24566b4337beee47c2d29" | tar -xvzf - -C /usr/lib/jvm/oracle8 --strip-components 1
56
+ sudo mkdir -p /usr/lib/jvm/oracle8
57
+ sudo curl -L --fail "https://javadl.oracle.com/webapps/download/AutoDL?BundleId=252034_8a1589aa0fe24566b4337beee47c2d29" | sudo tar -xvzf - -C /usr/lib/jvm/oracle8 --strip-components 1
45
58
EOT
46
59
47
60
# Install Ubuntu's OpenJDK 17 and fix broken symlinks:
48
61
# some files in /usr/lib/jvm/ubuntu17 are symlinks to /etc/java-17-openjdk/, so we just copy all symlinks targets.
49
62
RUN <<-EOT
50
63
set -eux
51
- apt-get update
52
- apt-get install -y openjdk-17-jdk
53
- mv /usr/lib/jvm/java-17-openjdk-amd64 /usr/lib/jvm/ubuntu17
54
- mkdir -p /usr/lib/jvm/ubuntu17/conf/ /usr/lib/jvm/ubuntu17/lib/
55
- cp -rf --remove-destination /etc/java-17-openjdk/* /usr/lib/jvm/ubuntu17/conf/
56
- cp -rf --remove-destination /etc/java-17-openjdk/* /usr/lib/jvm/ubuntu17/lib/
57
- cp -f --remove-destination /etc/java-17-openjdk/jvm-amd64.cfg /usr/lib/jvm/ubuntu17/lib/
58
- apt-get clean
59
- rm -rf /var/lib/apt/lists/*
64
+ sudo apt-get update
65
+ sudo apt-get install -y openjdk-17-jdk
66
+ sudo mv /usr/lib/jvm/java-17-openjdk-amd64 /usr/lib/jvm/ubuntu17
67
+ sudo mkdir -p /usr/lib/jvm/ubuntu17/conf/ /usr/lib/jvm/ubuntu17/lib/
68
+ sudo cp -rf --remove-destination /etc/java-17-openjdk/* /usr/lib/jvm/ubuntu17/conf/
69
+ sudo cp -rf --remove-destination /etc/java-17-openjdk/* /usr/lib/jvm/ubuntu17/lib/
70
+ sudo cp -f --remove-destination /etc/java-17-openjdk/jvm-amd64.cfg /usr/lib/jvm/ubuntu17/lib/
71
+ sudo apt-get clean
72
+ sudo rm -rf /var/lib/apt/lists/*
60
73
EOT
61
74
62
75
# Remove cruft from JDKs that is not used in the build process.
63
76
RUN <<-EOT
64
- rm -rf \
77
+ sudo rm -rf \
65
78
/usr/lib/jvm/*/man \
66
79
/usr/lib/jvm/*/lib/src.zip \
67
80
/usr/lib/jvm/*/demo \
68
81
/usr/lib/jvm/*/sample \
69
82
/usr/lib/jvm/graalvm*/lib/installer
70
83
EOT
71
84
72
- # Switch to non-root user during runtime for security
73
- USER non-root-user
74
- WORKDIR /home/non-root-user
75
-
76
85
FROM scratch AS default-jdk
77
86
78
87
COPY --from=all-jdk /usr/lib/jvm/8 /usr/lib/jvm/8
@@ -90,35 +99,33 @@ LABEL org.opencontainers.image.source=https://github.com/DataDog/dd-trace-java-d
90
99
RUN <<-EOT
91
100
set -eux
92
101
apt-get update
93
- apt-get install -y curl tar apt-transport-https ca-certificates gnupg \
94
- socat less debian-goodies autossh ca-certificates-java python3-pip locales jq git gh
95
- locale-gen en_US.UTF-8
102
+ apt-get install -y sudo
96
103
groupadd --gid 1001 non-root-group
97
104
useradd --uid 1001 --gid non-root-group -m non-root-user
105
+ echo "non-root-user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/non-root-user
106
+ chmod 0440 /etc/sudoers.d/non-root-user
98
107
mkdir -p /home/non-root-user/.config
99
- git config --system --add safe.directory '*'
100
108
chown -R non-root-user:non-root-group /home/non-root-user/.config
101
- apt-get clean
102
- rm -rf /var/lib/apt/lists/*
103
- mkdir -p /usr/local/lib/docker/cli-plugins /usr/local/bin
109
+ sudo apt-get clean
110
+ sudo rm -rf /var/lib/apt/lists/*
104
111
EOT
105
112
106
- ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
113
+ USER non-root-user
114
+ WORKDIR /home/non-root-user
107
115
108
- # Install Docker Compose plugin and yq YAML processor
109
116
RUN <<-EOT
110
- set -eu
111
- dockerPluginDir=/usr/local/lib/docker/cli-plugins
112
- curl -sSL "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m)" -o $dockerPluginDir/docker-compose
113
- chmod +x $dockerPluginDir/docker-compose
114
- update-alternatives --remove docker-compose /usr/local/bin/compose-switch
115
- rm -f /usr/local/bin/compose-switch
116
- curl -sSL "https://github.com/mikefarah/yq/releases/latest/download/yq_linux_$(dpkg --print-architecture).tar.gz" | tar -xz -C /usr/local/bin --wildcards --no-anchored 'yq_linux_*'
117
- YQ_PATH=$(find /usr/local/bin -name 'yq_linux_*' )
118
- mv "$YQ_PATH" /usr/local/bin/yq
119
- chown root:root /usr/local/bin/yq
117
+ set -eux
118
+ sudo apt-get update
119
+ sudo apt-get install -y curl tar apt-transport-https ca-certificates gnupg socat less debian-goodies autossh ca-certificates-java python3-pip locales jq git gh
120
+ sudo locale-gen en_US.UTF-8
121
+ sudo git config --system --add safe.directory "*"
122
+ sudo mkdir -p /usr/local/lib/docker/cli-plugins /usr/local/bin
123
+ sudo apt-get clean
124
+ sudo rm -rf /var/lib/apt/lists/*
120
125
EOT
121
126
127
+ ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
128
+
122
129
COPY --from=default-jdk /usr/lib/jvm /usr/lib/jvm
123
130
124
131
COPY autoforward.py /usr/local/bin/autoforward
@@ -129,20 +136,16 @@ COPY autoforward.py /usr/local/bin/autoforward
129
136
# - datadog-ci: Datadog CI tool
130
137
RUN <<-EOT
131
138
set -eux
132
- apt-get update
133
- pip3 install --break-system-packages awscli requests requests-unixsocket2
134
- pip3 cache purge
135
- chmod +x /usr/local/bin/autoforward
136
- curl -L --fail "https://github.com/DataDog/datadog-ci/releases/latest/download/datadog-ci_linux-x64" --output "/usr/local/bin/datadog-ci"
137
- chmod +x /usr/local/bin/datadog-ci
138
- apt-get clean
139
- rm -rf /var/lib/apt/lists/*
139
+ sudo apt-get update
140
+ sudo pip3 install --break-system-packages awscli requests requests-unixsocket2
141
+ sudo pip3 cache purge
142
+ sudo chmod +x /usr/local/bin/autoforward
143
+ sudo curl -L --fail "https://github.com/DataDog/datadog-ci/releases/latest/download/datadog-ci_linux-x64" --output "/usr/local/bin/datadog-ci"
144
+ sudo chmod +x /usr/local/bin/datadog-ci
145
+ sudo apt-get clean
146
+ sudo rm -rf /var/lib/apt/lists/*
140
147
EOT
141
148
142
- # Switch to non-root user during runtime for security
143
- USER non-root-user
144
- WORKDIR /home/non-root-user
145
-
146
149
# IBM specific env variables
147
150
ENV IBM_JAVA_OPTIONS="-XX:+UseContainerSupport"
148
151
@@ -167,7 +170,6 @@ COPY --from=all-jdk /usr/lib/jvm/${VARIANT_LOWER} /usr/lib/jvm/${VARIANT_LOWER}
167
170
ENV JAVA_${VARIANT_UPPER}_HOME=/usr/lib/jvm/${VARIANT_LOWER}
168
171
ENV JAVA_${VARIANT_LOWER}_HOME=/usr/lib/jvm/${VARIANT_LOWER}
169
172
170
- # Switch to non-root user during runtime for security
171
173
USER non-root-user
172
174
WORKDIR /home/non-root-user
173
175
@@ -186,7 +188,6 @@ COPY --from=all-jdk /usr/lib/jvm/ubuntu17 /usr/lib/jvm/ubuntu17
186
188
COPY --from=all-jdk /usr/lib/jvm/graalvm17 /usr/lib/jvm/graalvm17
187
189
COPY --from=all-jdk /usr/lib/jvm/graalvm21 /usr/lib/jvm/graalvm21
188
190
189
- # Switch to non-root user during runtime for security
190
191
USER non-root-user
191
192
WORKDIR /home/non-root-user
192
193
0 commit comments