Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 43 additions & 14 deletions dev/docker-build/azurelinux3/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -62,22 +62,51 @@ RUN curl https://sh.rustup.rs -sSf -o rustup-init && \
ENV PATH="/root/.cargo/bin:${PATH}"

# ---------------------------------------------------------------------
# Install Java (Microsoft OpenJDK 17 - matches Azure Synapse Spark pools)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We would still want to install Microsoft OpenJDK based java versions for azurelinux, right?

# ---------------------------------------------------------------------
RUN tdnf -y install msopenjdk-17 && \
tdnf clean all && \
rm -rf /var/cache/tdnf

# Set JAVA_HOME for Microsoft OpenJDK 17 on Azure Linux
ENV JAVA_HOME="/usr/lib/jvm/msopenjdk-17"
# Install Java (multiple Temurin OpenJDK versions)
# NOTE: JDK 8 and JDK 11 are EOL. Prefer JDK 17+ for new usage.
# ---------------------------------------------------------------------
ARG JDK_VERSIONS="8 11 17 21"
ARG DEFAULT_JDK="8"
ENV JAVA_INSTALL_BASE="/opt/java"
RUN set -eux; \
mkdir -p "${JAVA_INSTALL_BASE}"; \
for v in ${JDK_VERSIONS}; do \
url="https://github.com/adoptium/temurin${v}-binaries/releases/latest/download/OpenJDK${v}U-jdk_x64_linux_hotspot.tar.gz"; \
curl -fsSL "$url" -o /tmp/temurin.tar.gz || { echo "Failed to download JDK ${v}"; exit 1; }; \
mkdir -p "${JAVA_INSTALL_BASE}/temurin-${v}"; \
tar -xzf /tmp/temurin.tar.gz -C "${JAVA_INSTALL_BASE}/temurin-${v}" --strip-components=1; \
done; \
rm -f /tmp/temurin.tar.gz; \
alt="$(command -v update-alternatives || command -v alternatives)"; \
for v in ${JDK_VERSIONS}; do \
"$alt" --install /usr/bin/java java "${JAVA_INSTALL_BASE}/temurin-${v}/bin/java" $((100 + v)); \
"$alt" --install /usr/bin/javac javac "${JAVA_INSTALL_BASE}/temurin-${v}/bin/javac" $((100 + v)); \
done; \
"$alt" --set java "${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}/bin/java"; \
"$alt" --set javac "${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}/bin/javac"
Comment on lines +69 to +86
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This patterns seems like it would bloat the base image quite a bit. Why not, either

  1. let the callers pass in a build arg like so
  2. or have different docker files per jdk version (seems like common practice)

# Default JAVA_HOME is set at build time; run `source /etc/profile.d/java.sh` after set-java to update.
ENV JAVA_HOME="${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}"
ENV PATH="${JAVA_HOME}/bin:${PATH}"

# ---------------------------------------------------------------------
# Create .bashrc with necessary environment variables
# ---------------------------------------------------------------------
RUN echo 'export PATH="/root/.cargo/bin:${PATH}"' > /root/.bashrc && \
echo 'export JAVA_HOME="/usr/lib/jvm/msopenjdk-17"' >> /root/.bashrc && \
echo 'export PATH="${JAVA_HOME}/bin:${PATH}"' >> /root/.bashrc
# Helper to switch JDK at runtime (e.g., set-java 11)
RUN printf '%s\n' \
'#!/usr/bin/env bash' \
'set -euo pipefail' \
'ver="${1:-}"' \
'if [ -z "$ver" ]; then echo "usage: set-java <version>"; exit 2; fi' \
'base="/opt/java/temurin-${ver}"' \
'if [ ! -x "${base}/bin/java" ]; then echo "JDK ${ver} not installed"; exit 1; fi' \
'alt="$(command -v update-alternatives || command -v alternatives)"' \
'"$alt" --set java "${base}/bin/java"' \
'"$alt" --set javac "${base}/bin/javac"' \
'echo "Java switched to version ${ver}. Run '\''source /etc/profile.d/java.sh'\'' to update JAVA_HOME."' \
> /usr/local/bin/set-java && chmod +x /usr/local/bin/set-java

# Dynamic JAVA_HOME for interactive shells
RUN printf '%s\n' \
'export JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(command -v java)")")")"' \
'export PATH="${JAVA_HOME}/bin:${PATH}"' \
> /etc/profile.d/java.sh

# ---------------------------------------------------------------------
# Set working directory
Expand Down
50 changes: 47 additions & 3 deletions dev/docker-build/centos7/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,50 @@ RUN curl https://sh.rustup.rs > /rustup-init
RUN chmod +x /rustup-init
RUN /rustup-init -y --default-toolchain nightly-2025-05-09-x86_64-unknown-linux-gnu

# install java
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
RUN echo 'export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk"' >> ~/.bashrc
# install java (multiple Temurin OpenJDK versions)
# NOTE: JDK 8 and JDK 11 are EOL. Prefer JDK 17+ for new usage.
ARG JDK_VERSIONS="8 11 17 21"
ARG DEFAULT_JDK="8"
ENV JAVA_INSTALL_BASE="/opt/java"
RUN set -eux; \
mkdir -p "${JAVA_INSTALL_BASE}"; \
for v in ${JDK_VERSIONS}; do \
url="https://github.com/adoptium/temurin${v}-binaries/releases/latest/download/OpenJDK${v}U-jdk_x64_linux_hotspot.tar.gz"; \
curl -fsSL "$url" -o /tmp/temurin.tar.gz || { echo "Failed to download JDK ${v}"; exit 1; }; \
mkdir -p "${JAVA_INSTALL_BASE}/temurin-${v}"; \
tar -xzf /tmp/temurin.tar.gz -C "${JAVA_INSTALL_BASE}/temurin-${v}" --strip-components=1; \
done; \
rm -f /tmp/temurin.tar.gz; \
alt="$(command -v update-alternatives || command -v alternatives)"; \
for v in ${JDK_VERSIONS}; do \
"$alt" --install /usr/bin/java java "${JAVA_INSTALL_BASE}/temurin-${v}/bin/java" $((100 + v)); \
"$alt" --install /usr/bin/javac javac "${JAVA_INSTALL_BASE}/temurin-${v}/bin/javac" $((100 + v)); \
done; \
"$alt" --set java "${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}/bin/java"; \
"$alt" --set javac "${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}/bin/javac"
# Default JAVA_HOME is set at build time; run `source /etc/profile.d/java.sh` after set-java to update.
ENV JAVA_HOME="${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}"
ENV PATH="${JAVA_HOME}/bin:${PATH}"

# Helper to switch JDK at runtime (e.g., set-java 11)
RUN printf '%s\n' \
'#!/usr/bin/env bash' \
'set -euo pipefail' \
'ver="${1:-}"' \
'if [ -z "$ver" ]; then echo "usage: set-java <version>"; exit 2; fi' \
'base="/opt/java/temurin-${ver}"' \
'if [ ! -x "${base}/bin/java" ]; then echo "JDK ${ver} not installed"; exit 1; fi' \
'alt="$(command -v update-alternatives || command -v alternatives)"' \
'"$alt" --set java "${base}/bin/java"' \
'"$alt" --set javac "${base}/bin/javac"' \
'echo "Java switched to version ${ver}. Run '\''source /etc/profile.d/java.sh'\'' to update JAVA_HOME."' \
> /usr/local/bin/set-java && chmod +x /usr/local/bin/set-java

# Dynamic JAVA_HOME for interactive shells
RUN printf '%s\n' \
'export JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(command -v java)")")")"' \
'export PATH="${JAVA_HOME}/bin:${PATH}"' \
> /etc/profile.d/java.sh

# set working directory
WORKDIR /auron
52 changes: 45 additions & 7 deletions dev/docker-build/debian11/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -58,14 +58,52 @@ RUN curl https://sh.rustup.rs -sSf -o rustup-init && \
ENV PATH="/root/.cargo/bin:${PATH}"

# ---------------------------------------------------------------------
# Install Java (OpenJDK 11)
# ---------------------------------------------------------------------
RUN apt-get update -y && \
apt-get install -y --no-install-recommends openjdk-11-jdk && \
rm -rf /var/lib/apt/lists/*
ENV JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64"
# Install Java (multiple Temurin OpenJDK versions)
# NOTE: JDK 8 and JDK 11 are EOL. Prefer JDK 17+ for new usage.
# ---------------------------------------------------------------------
ARG JDK_VERSIONS="8 11 17 21"
ARG DEFAULT_JDK="8"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason why the default is still JDK 8?

ENV JAVA_INSTALL_BASE="/opt/java"
RUN set -eux; \
mkdir -p "${JAVA_INSTALL_BASE}"; \
for v in ${JDK_VERSIONS}; do \
url="https://github.com/adoptium/temurin${v}-binaries/releases/latest/download/OpenJDK${v}U-jdk_x64_linux_hotspot.tar.gz"; \
curl -fsSL "$url" -o /tmp/temurin.tar.gz || { echo "Failed to download JDK ${v}"; exit 1; }; \
mkdir -p "${JAVA_INSTALL_BASE}/temurin-${v}"; \
tar -xzf /tmp/temurin.tar.gz -C "${JAVA_INSTALL_BASE}/temurin-${v}" --strip-components=1; \
done; \
rm -f /tmp/temurin.tar.gz; \
alt="$(command -v update-alternatives || command -v alternatives)"; \
for v in ${JDK_VERSIONS}; do \
"$alt" --install /usr/bin/java java "${JAVA_INSTALL_BASE}/temurin-${v}/bin/java" $((100 + v)); \
"$alt" --install /usr/bin/javac javac "${JAVA_INSTALL_BASE}/temurin-${v}/bin/javac" $((100 + v)); \
done; \
"$alt" --set java "${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}/bin/java"; \
"$alt" --set javac "${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}/bin/javac"
# Default JAVA_HOME is set at build time; run `source /etc/profile.d/java.sh` after set-java to update.
ENV JAVA_HOME="${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}"
ENV PATH="${JAVA_HOME}/bin:${PATH}"

# Helper to switch JDK at runtime (e.g., set-java 11)
RUN printf '%s\n' \
'#!/usr/bin/env bash' \
'set -euo pipefail' \
'ver="${1:-}"' \
'if [ -z "$ver" ]; then echo "usage: set-java <version>"; exit 2; fi' \
'base="/opt/java/temurin-${ver}"' \
'if [ ! -x "${base}/bin/java" ]; then echo "JDK ${ver} not installed"; exit 1; fi' \
'alt="$(command -v update-alternatives || command -v alternatives)"' \
'"$alt" --set java "${base}/bin/java"' \
'"$alt" --set javac "${base}/bin/javac"' \
'echo "Java switched to version ${ver}. Run '\''source /etc/profile.d/java.sh'\'' to update JAVA_HOME."' \
> /usr/local/bin/set-java && chmod +x /usr/local/bin/set-java

# Dynamic JAVA_HOME for interactive shells
RUN printf '%s\n' \
'export JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(command -v java)")")")"' \
'export PATH="${JAVA_HOME}/bin:${PATH}"' \
> /etc/profile.d/java.sh

# ---------------------------------------------------------------------
# Set working directory
# ---------------------------------------------------------------------
Expand All @@ -74,4 +112,4 @@ WORKDIR /auron
# ---------------------------------------------------------------------
# Default command
# ---------------------------------------------------------------------
CMD ["/bin/bash"]
CMD ["/bin/bash"]
52 changes: 45 additions & 7 deletions dev/docker-build/rockylinux8/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,52 @@ RUN curl https://sh.rustup.rs -sSf -o rustup-init && \
ENV PATH="/root/.cargo/bin:${PATH}"

# ---------------------------------------------------------------------
# Install Java (OpenJDK 8)
# ---------------------------------------------------------------------
RUN dnf -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel && \
dnf clean all && \
rm -rf /var/cache/dnf
ENV JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk"
# Install Java (multiple Temurin OpenJDK versions)
# NOTE: JDK 8 and JDK 11 are EOL. Prefer JDK 17+ for new usage.
# ---------------------------------------------------------------------
ARG JDK_VERSIONS="8 11 17 21"
ARG DEFAULT_JDK="8"
ENV JAVA_INSTALL_BASE="/opt/java"
RUN set -eux; \
mkdir -p "${JAVA_INSTALL_BASE}"; \
for v in ${JDK_VERSIONS}; do \
url="https://github.com/adoptium/temurin${v}-binaries/releases/latest/download/OpenJDK${v}U-jdk_x64_linux_hotspot.tar.gz"; \
curl -fsSL "$url" -o /tmp/temurin.tar.gz || { echo "Failed to download JDK ${v}"; exit 1; }; \
mkdir -p "${JAVA_INSTALL_BASE}/temurin-${v}"; \
tar -xzf /tmp/temurin.tar.gz -C "${JAVA_INSTALL_BASE}/temurin-${v}" --strip-components=1; \
done; \
rm -f /tmp/temurin.tar.gz; \
alt="$(command -v update-alternatives || command -v alternatives)"; \
for v in ${JDK_VERSIONS}; do \
"$alt" --install /usr/bin/java java "${JAVA_INSTALL_BASE}/temurin-${v}/bin/java" $((100 + v)); \
"$alt" --install /usr/bin/javac javac "${JAVA_INSTALL_BASE}/temurin-${v}/bin/javac" $((100 + v)); \
done; \
"$alt" --set java "${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}/bin/java"; \
"$alt" --set javac "${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}/bin/javac"
# Default JAVA_HOME is set at build time; run `source /etc/profile.d/java.sh` after set-java to update.
ENV JAVA_HOME="${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}"
ENV PATH="${JAVA_HOME}/bin:${PATH}"

# Helper to switch JDK at runtime (e.g., set-java 11)
RUN printf '%s\n' \
'#!/usr/bin/env bash' \
'set -euo pipefail' \
'ver="${1:-}"' \
'if [ -z "$ver" ]; then echo "usage: set-java <version>"; exit 2; fi' \
'base="/opt/java/temurin-${ver}"' \
'if [ ! -x "${base}/bin/java" ]; then echo "JDK ${ver} not installed"; exit 1; fi' \
'alt="$(command -v update-alternatives || command -v alternatives)"' \
'"$alt" --set java "${base}/bin/java"' \
'"$alt" --set javac "${base}/bin/javac"' \
'echo "Java switched to version ${ver}. Run '\''source /etc/profile.d/java.sh'\'' to update JAVA_HOME."' \
> /usr/local/bin/set-java && chmod +x /usr/local/bin/set-java

# Dynamic JAVA_HOME for interactive shells
RUN printf '%s\n' \
'export JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(command -v java)")")")"' \
'export PATH="${JAVA_HOME}/bin:${PATH}"' \
> /etc/profile.d/java.sh

# ---------------------------------------------------------------------
# Set working directory
# ---------------------------------------------------------------------
Expand All @@ -79,4 +117,4 @@ WORKDIR /auron
# ---------------------------------------------------------------------
# Default command
# ---------------------------------------------------------------------
CMD ["/bin/bash"]
CMD ["/bin/bash"]
48 changes: 43 additions & 5 deletions dev/docker-build/ubuntu24/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,52 @@ RUN curl https://sh.rustup.rs -sSf -o rustup-init && \
ENV PATH="/root/.cargo/bin:${PATH}"

# ---------------------------------------------------------------------
# Install Java (OpenJDK 8)
# Install Java (multiple Temurin OpenJDK versions)
# NOTE: JDK 8 and JDK 11 are EOL. Prefer JDK 17+ for new usage.
# ---------------------------------------------------------------------
RUN apt-get update -y && \
apt-get install -y openjdk-8-jdk && \
rm -rf /var/lib/apt/lists/*
ENV JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
ARG JDK_VERSIONS="8 11 17 21"
ARG DEFAULT_JDK="8"
ENV JAVA_INSTALL_BASE="/opt/java"
RUN set -eux; \
mkdir -p "${JAVA_INSTALL_BASE}"; \
for v in ${JDK_VERSIONS}; do \
url="https://github.com/adoptium/temurin${v}-binaries/releases/latest/download/OpenJDK${v}U-jdk_x64_linux_hotspot.tar.gz"; \
curl -fsSL "$url" -o /tmp/temurin.tar.gz || { echo "Failed to download JDK ${v}"; exit 1; }; \
mkdir -p "${JAVA_INSTALL_BASE}/temurin-${v}"; \
tar -xzf /tmp/temurin.tar.gz -C "${JAVA_INSTALL_BASE}/temurin-${v}" --strip-components=1; \
done; \
rm -f /tmp/temurin.tar.gz; \
alt="$(command -v update-alternatives || command -v alternatives)"; \
for v in ${JDK_VERSIONS}; do \
"$alt" --install /usr/bin/java java "${JAVA_INSTALL_BASE}/temurin-${v}/bin/java" $((100 + v)); \
"$alt" --install /usr/bin/javac javac "${JAVA_INSTALL_BASE}/temurin-${v}/bin/javac" $((100 + v)); \
done; \
"$alt" --set java "${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}/bin/java"; \
"$alt" --set javac "${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}/bin/javac"
# Default JAVA_HOME is set at build time; run `source /etc/profile.d/java.sh` after set-java to update.
ENV JAVA_HOME="${JAVA_INSTALL_BASE}/temurin-${DEFAULT_JDK}"
ENV PATH="${JAVA_HOME}/bin:${PATH}"

# Helper to switch JDK at runtime (e.g., set-java 11)
RUN printf '%s\n' \
'#!/usr/bin/env bash' \
'set -euo pipefail' \
'ver="${1:-}"' \
'if [ -z "$ver" ]; then echo "usage: set-java <version>"; exit 2; fi' \
'base="/opt/java/temurin-${ver}"' \
'if [ ! -x "${base}/bin/java" ]; then echo "JDK ${ver} not installed"; exit 1; fi' \
'alt="$(command -v update-alternatives || command -v alternatives)"' \
'"$alt" --set java "${base}/bin/java"' \
'"$alt" --set javac "${base}/bin/javac"' \
'echo "Java switched to version ${ver}. Run '\''source /etc/profile.d/java.sh'\'' to update JAVA_HOME."' \
> /usr/local/bin/set-java && chmod +x /usr/local/bin/set-java

# Dynamic JAVA_HOME for interactive shells
RUN printf '%s\n' \
'export JAVA_HOME="$(dirname "$(dirname "$(readlink -f "$(command -v java)")")")"' \
'export PATH="${JAVA_HOME}/bin:${PATH}"' \
> /etc/profile.d/java.sh

# ---------------------------------------------------------------------
# Set working directory
# ---------------------------------------------------------------------
Expand Down
Loading