diff --git a/.java-version b/.java-version
index a45fd52cc..eae980b3c 100644
--- a/.java-version
+++ b/.java-version
@@ -1 +1 @@
-24
+24.0.2+12
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 19acf1951..054c823b0 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -13,31 +13,48 @@
# syntax=docker/dockerfile:1
ARG TRINO_GATEWAY_BASE_IMAGE
-FROM ${TRINO_GATEWAY_BASE_IMAGE} AS jdk-download
+ARG TRINO_GATEWAY_BUILD_IMAGE
+
+FROM ${TRINO_GATEWAY_BUILD_IMAGE} AS jdk-download
ARG JDK_DOWNLOAD_LINK
-ARG JDK_VERSION
-ENV JAVA_HOME="/usr/lib/jvm/jdk-${JDK_VERSION}"
+ARG JDK_RELEASE_NAME
+ENV JAVA_HOME="/usr/lib/jvm/jdk-${JDK_RELEASE_NAME}"
RUN \
set -xeuo pipefail && \
- microdnf install -y tar gzip && \
+ dnf install -y tar gzip && \
# Install JDK from the provided archive link \
echo "Downloading JDK from ${JDK_DOWNLOAD_LINK}" && \
mkdir -p "${JAVA_HOME}" && \
curl -#LfS "${JDK_DOWNLOAD_LINK}" | tar -zx --strip 1 -C "${JAVA_HOME}"
+FROM ${TRINO_GATEWAY_BUILD_IMAGE} AS packages
+
+RUN \
+ set -xeuo pipefail && \
+ mkdir -p /tmp/overlay/usr/libexec/ && \
+ touch /tmp/overlay/usr/libexec/grepconf.sh && \
+ chmod +x /tmp/overlay/usr/libexec/grepconf.sh && \
+ dnf update -y && \
+ dnf install --installroot /tmp/overlay --setopt install_weak_deps=false --nodocs -y \
+ less \
+ zlib `#required by java` \
+ curl-minimal grep `# required by health-check` \
+ shadow-utils `# required by useradd` \
+ tar `# required to support kubectl cp` && \
+ rm -rf /tmp/overlay/var/cache/*
+
FROM ${TRINO_GATEWAY_BASE_IMAGE}
WORKDIR /usr/lib/trino-gateway
-ARG JDK_VERSION
-ENV JAVA_HOME="/usr/lib/jvm/jdk-${JDK_VERSION}"
+ARG JDK_RELEASE_NAME
+ENV JAVA_HOME="/usr/lib/jvm/jdk-${JDK_RELEASE_NAME}"
ENV PATH=$PATH:$JAVA_HOME/bin
COPY --from=jdk-download $JAVA_HOME $JAVA_HOME
+COPY --from=packages /tmp/overlay /
RUN \
set -xeu && \
- microdnf update -y && \
- microdnf install -y tar less shadow-utils && \
groupadd trino --gid 1000 && \
useradd trino --uid 1000 --gid 1000 --create-home && \
mkdir -p /usr/lib/trino-gateway /etc/trino-gateway && \
diff --git a/docker/build.sh b/docker/build.sh
index 027c2dd03..e1d899855 100755
--- a/docker/build.sh
+++ b/docker/build.sh
@@ -22,7 +22,7 @@ SOURCE_DIR="${SCRIPT_DIR}/.."
ARCHITECTURES=(amd64 arm64 ppc64le)
TRINO_GATEWAY_VERSION=
-JDK_VERSION=$(cat "${SOURCE_DIR}/.java-version")
+JDK_RELEASE_NAME=$(cat "${SOURCE_DIR}/.java-version")
# necessary to allow version parsing from the pom file
MVNW_VERBOSE=false
@@ -39,7 +39,7 @@ while getopts ":a:h:r:j:" o; do
exit 0
;;
j)
- JDK_VERSION="${OPTARG}"
+ JDK_RELEASE_NAME="${OPTARG}"
;;
*)
usage
@@ -61,29 +61,18 @@ function check_environment() {
}
function temurin_jdk_link() {
- JDK_VERSION="${1}"
+ JDK_RELEASE_NAME="${1}"
ARCH="${2}"
- versionsUrl="https://api.adoptium.net/v3/info/release_names?heap_size=normal&image_type=jdk&os=linux&page=0&page_size=20&project=jdk&release_type=ga&semver=false&sort_method=DEFAULT&sort_order=ASC&vendor=eclipse&version=%28${JDK_VERSION}%2C%5D"
- if ! result=$(curl -fLs "$versionsUrl" -H 'accept: application/json'); then
- echo >&2 "Failed to fetch release names for JDK version [${JDK_VERSION}, ) from Temurin API : $result"
- exit 1
- fi
-
- if ! RELEASE_NAME=$(echo "$result" | jq -er '.releases[]' | grep "${JDK_VERSION}" | head -n 1); then
- echo >&2 "Failed to determine release name: ${RELEASE_NAME}"
- exit 1
- fi
-
case "${ARCH}" in
arm64)
- echo "https://api.adoptium.net/v3/binary/version/${RELEASE_NAME}/linux/aarch64/jdk/hotspot/normal/eclipse?project=jdk"
+ echo "https://api.adoptium.net/v3/binary/version/${JDK_RELEASE_NAME}/linux/aarch64/jdk/hotspot/normal/eclipse?project=jdk"
;;
amd64)
- echo "https://api.adoptium.net/v3/binary/version/${RELEASE_NAME}/linux/x64/jdk/hotspot/normal/eclipse?project=jdk"
+ echo "https://api.adoptium.net/v3/binary/version/${JDK_RELEASE_NAME}/linux/x64/jdk/hotspot/normal/eclipse?project=jdk"
;;
ppc64le)
- echo "https://api.adoptium.net/v3/binary/version/${RELEASE_NAME}/linux/ppc64le/jdk/hotspot/normal/eclipse?project=jdk"
+ echo "https://api.adoptium.net/v3/binary/version/${JDK_RELEASE_NAME}/linux/ppc64le/jdk/hotspot/normal/eclipse?project=jdk"
;;
*)
echo "${ARCH} is not supported for Docker image"
@@ -118,17 +107,19 @@ TAG_PREFIX="trino-gateway:${TRINO_GATEWAY_VERSION}"
#version file is used by the Helm chart test
echo "${TRINO_GATEWAY_VERSION}" > "${SOURCE_DIR}"/trino-gateway-version.txt
-TRINO_GATEWAY_BASE_IMAGE=${TRINO_GATEWAY_BASE_IMAGE:-'registry.access.redhat.com/ubi9/ubi-minimal:latest'}
+TRINO_GATEWAY_BASE_IMAGE=${TRINO_GATEWAY_BASE_IMAGE:-'registry.access.redhat.com/ubi10/ubi-micro:latest'}
+TRINO_GATEWAY_BUILD_IMAGE=${TRINO_GATEWAY_BUILD_IMAGE:-'registry.access.redhat.com/ubi10/ubi:latest'}
for arch in "${ARCHITECTURES[@]}"; do
- echo "🫙 Building the image for $arch with JDK ${JDK_VERSION}"
+ echo "🫙 Building the image for $arch with Temurin JDK release ${JDK_RELEASE_NAME}"
DOCKER_BUILDKIT=1 \
docker build \
"${WORK_DIR}" \
--pull \
- --build-arg JDK_VERSION="${JDK_VERSION}" \
- --build-arg JDK_DOWNLOAD_LINK="$(temurin_jdk_link "${JDK_VERSION}" "${arch}")" \
+ --build-arg JDK_RELEASE_NAME="${JDK_RELEASE_NAME}" \
+ --build-arg JDK_DOWNLOAD_LINK="$(temurin_jdk_link "jdk-${JDK_RELEASE_NAME}" "${arch}")" \
--build-arg TRINO_GATEWAY_BASE_IMAGE="${TRINO_GATEWAY_BASE_IMAGE}" \
+ --build-arg TRINO_GATEWAY_BUILD_IMAGE="${TRINO_GATEWAY_BUILD_IMAGE}" \
--platform "linux/$arch" \
-f Dockerfile \
-t "${TAG_PREFIX}-$arch"
diff --git a/pom.xml b/pom.xml
index d104a55ef..84248ef4c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,6 +45,8 @@
true
8
clean verify -DskipTests
+
+ 12.0.25
@@ -76,7 +78,19 @@
io.airlift
units
- 1.10
+ 1.12
+
+
+
+ org.apache.commons
+ commons-lang3
+ 3.18.0
+
+
+
+ org.apache.mina
+ mina-core
+ 2.2.4