docker-openj9-piped/Dockerfile.openj9

65 lines
2.7 KiB
Text
Raw Normal View History

2025-03-09 16:20:48 +04:00
FROM ubuntu:25.04 AS build
2025-01-27 14:25:02 +04:00
2025-03-13 19:58:16 +04:00
# partially copied from mkdocker.sh
2025-01-27 14:25:02 +04:00
# Copyright IBM Corp (Eclipse Public License 2.0)
2025-03-09 20:09:54 +04:00
RUN apt -qq update \
2025-03-13 19:58:16 +04:00
&& apt -qq upgrade -y \
&& apt -qq install -y --no-install-recommends \
ant ant-contrib autoconf build-essential ca-certificates cmake cpio curl file gcc-14 g++-14 gdb git \
libasound2-dev libcups2-dev libdwarf-dev libelf-dev libexpat1-dev libffi-dev libfontconfig libfontconfig1-dev \
libfreetype6-dev libnuma-dev libssl-dev libx11-dev libxext-dev libxrandr-dev libxrender-dev libxt-dev libxtst-dev \
make nasm pkg-config python3 python3-dev rsync systemtap-sdt-dev unzip wget xvfb zip zlib1g-dev execstack unzip \
&& rm -rf /var/lib/apt/lists/*
2025-01-27 14:25:02 +04:00
WORKDIR /build
RUN mkdir /build/bootjdk /build/dist \
2025-03-13 19:58:16 +04:00
&& wget --progress=dot:mega -O jdk21.tar.gz \
https://api.adoptopenjdk.net/v3/binary/latest/21/ga/linux/x64/jdk/openj9/normal/adoptopenjdk \
&& tar -xzf jdk21.tar.gz --directory=/build/bootjdk --strip-components=1 \
&& rm -f jdk21.tar.gz
2025-01-27 14:25:02 +04:00
2025-03-09 19:29:02 +04:00
RUN find /build/bootjdk -name '*.so' | xargs execstack -c
2025-01-27 14:25:02 +04:00
RUN git clone --single-branch --depth 1 \
2025-03-13 19:58:16 +04:00
https://github.com/ibmruntimes/openj9-openjdk-jdk21.git \
/build/src
2025-01-27 14:25:02 +04:00
WORKDIR /build/src
RUN bash get_source.sh
2025-03-09 18:58:35 +04:00
2025-03-12 18:30:22 +04:00
RUN bash configure \
2025-03-13 19:58:16 +04:00
--enable-libffi-bundling --enable-ddr --enable-jitserver \
--enable-fallback-linker --with-jtreg=/build/jtreg --with-boot-jdk=/build/bootjdk \
--with-openssl=system --with-extra-ldflags="-Wl,-z,noexecstack"
2025-03-12 18:30:22 +04:00
2025-03-09 18:50:36 +04:00
RUN make all JOBS=$(nproc)
2025-01-27 14:25:02 +04:00
# jlink by advice from https://adoptium.net/blog/2021/10/jlink-to-produce-own-runtime/
WORKDIR /build/src/build/linux-x86_64-server-release/images
RUN jdk/bin/jlink --strip-debug --no-man-pages --no-header-files --compress=2 \
2025-03-13 19:58:16 +04:00
--output jre \
--add-modules java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,\
java.management,java.management.rmi,java.naming,java.net.http,java.prefs,java.rmi,java.scripting,java.se,\
java.security.jgss,java.security.sasl,java.smartcardio,java.sql,java.sql.rowset,java.transaction.xa,\
java.xml,java.xml.crypto,jdk.accessibility,jdk.charsets,jdk.crypto.cryptoki,jdk.crypto.ec,jdk.dynalink,\
jdk.httpserver,jdk.incubator.vector,jdk.jsobject,jdk.localedata,jdk.naming.dns,jdk.naming.rmi,jdk.net,\
jdk.nio.mapmode,jdk.random,jdk.sctp,jdk.security.auth,jdk.security.jgss,jdk.unsupported,jdk.unsupported.desktop,\
jdk.xml.dom,jdk.zipfs,openj9.criu,openj9.cuda,openj9.dataaccess,openj9.gpu,openj9.jvm,\
openj9.sharedclasses,openj9.zosconditionhandling
2025-03-09 20:09:54 +04:00
WORKDIR /build/src/build/linux-x86_64-server-release/images
RUN mv ./* /build/dist/
2025-01-27 14:25:02 +04:00
# ------
2025-03-09 16:20:48 +04:00
FROM ubuntu:25.04 AS run
2025-01-27 14:25:02 +04:00
COPY --from=build /build/dist/jre /usr/lib/jvm/openj9-jre
ENV JAVA_HOME=/usr/lib/jvm/openj9-jre
2025-03-09 20:09:54 +04:00
ENV PATH="$JAVA_HOME/bin:$JAVA_HOME/lib:$PATH"
2025-01-27 14:25:02 +04:00
# verify installation
RUN java --version
2025-01-27 14:25:02 +04:00
# ------