Skip to content
Merged
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
12 changes: 8 additions & 4 deletions .github/workflows/build-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,11 @@ jobs:
-t mcr.microsoft.com/openjdk/jdk:8-${{ matrix.baseimage }} \
-f ./docker/${{ matrix.baseimage }}/Dockerfile.temurin-8-jdk \
./docker/${{ matrix.baseimage }}/
- name: Test the image

- name: Validate the image
run: |
bash ./scripts/validate-image.sh -s ${{ matrix.baseimage }} temurin 8
bash ./scripts/validate-image.sh \
-s ${{ matrix.baseimage }} temurin 8

build_msopenjdk:
runs-on: ubuntu-latest
Expand All @@ -47,6 +49,8 @@ jobs:
-t mcr.microsoft.com/openjdk/jdk:${{ matrix.jdkversion }}-${{ matrix.baseimage }} \
-f ./docker/${{ matrix.baseimage }}/Dockerfile.msopenjdk-${{ matrix.jdkversion }}-jdk \
./docker/${{ matrix.baseimage }}/
- name: Test the image

- name: Validate the image
run: |
bash ./scripts/validate-image.sh -s ${{ matrix.baseimage }} msopenjdk ${{ matrix.jdkversion }}
bash ./scripts/validate-image.sh \
-s ${{ matrix.baseimage }} msopenjdk ${{ matrix.jdkversion }}
2 changes: 1 addition & 1 deletion docker/azurelinux/Dockerfile.msopenjdk-11-jdk
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ LABEL "Author"="Microsoft"
LABEL "Support"="Microsoft OpenJDK Support <[email protected]>"

ARG package="msopenjdk-11"
ARG PKGS="tzdata ca-certificates freetype shadow-utils"
ARG PKGS="tzdata ca-certificates freetype shadow-utils jaz"

ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
ENV JAVA_HOME=/usr/lib/jvm/msopenjdk-11
Expand Down
2 changes: 1 addition & 1 deletion docker/azurelinux/Dockerfile.msopenjdk-17-jdk
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ LABEL "Author"="Microsoft"
LABEL "Support"="Microsoft OpenJDK Support <[email protected]>"

ARG package="msopenjdk-17"
ARG PKGS="tzdata ca-certificates freetype shadow-utils"
ARG PKGS="tzdata ca-certificates freetype shadow-utils jaz"

ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
ENV JAVA_HOME=/usr/lib/jvm/msopenjdk-17
Expand Down
48 changes: 24 additions & 24 deletions docker/azurelinux/Dockerfile.msopenjdk-21-jdk
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
ARG IMAGE="mcr.microsoft.com/azurelinux/base/core"
ARG TAG="3.0"
FROM ${IMAGE}:${TAG}
LABEL "Author"="Microsoft"
LABEL "Support"="Microsoft OpenJDK Support <[email protected]>"
ARG package="msopenjdk-21"
ARG PKGS="tzdata ca-certificates freetype shadow-utils"
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
ENV JAVA_HOME=/usr/lib/jvm/msopenjdk-21
RUN tdnf update -y && \
tdnf install -y ${package} ${PKGS} && \
tdnf clean all && \
groupadd --system --gid=101 app && \
adduser --uid 101 --gid 101 --system app && \
install -d -m 0755 -o 101 -g 101 "/home/app" && \
rm -rf /var/cache/tdnf && \
rm -rf /usr/lib/jvm/${package}/lib/src.zip && \
echo java -Xshare:dump && \
java -Xshare:dump
ARG IMAGE="mcr.microsoft.com/azurelinux/base/core"
ARG TAG="3.0"
FROM ${IMAGE}:${TAG}

LABEL "Author"="Microsoft"
LABEL "Support"="Microsoft OpenJDK Support <[email protected]>"

ARG package="msopenjdk-21"
ARG PKGS="tzdata ca-certificates freetype shadow-utils jaz"

ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
ENV JAVA_HOME=/usr/lib/jvm/msopenjdk-21

RUN tdnf update -y && \
tdnf install -y ${package} ${PKGS} && \
tdnf clean all && \
groupadd --system --gid=101 app && \
adduser --uid 101 --gid 101 --system app && \
install -d -m 0755 -o 101 -g 101 "/home/app" && \
rm -rf /var/cache/tdnf && \
rm -rf /usr/lib/jvm/${package}/lib/src.zip && \
echo java -Xshare:dump && \
java -Xshare:dump

2 changes: 1 addition & 1 deletion docker/azurelinux/Dockerfile.msopenjdk-25-jdk
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ LABEL "Author"="Microsoft"
LABEL "Support"="Microsoft OpenJDK Support <[email protected]>"

ARG package="msopenjdk-25"
ARG PKGS="tzdata ca-certificates freetype shadow-utils"
ARG PKGS="tzdata ca-certificates freetype shadow-utils jaz"

ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
ENV JAVA_HOME=/usr/lib/jvm/msopenjdk-25
Expand Down
2 changes: 1 addition & 1 deletion docker/azurelinux/Dockerfile.temurin-8-jdk
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ LABEL "Author"="Microsoft"
LABEL "Support"="Microsoft OpenJDK Support <[email protected]>"

ARG JDK_PKG="temurin-8-jdk"
ARG PKGS="tzdata ca-certificates freetype shadow-utils"
ARG PKGS="tzdata ca-certificates freetype shadow-utils jaz"

ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
ENV JAVA_HOME=/usr/lib/jvm/temurin-8-jdk
Expand Down
2 changes: 1 addition & 1 deletion docker/distroless/Dockerfile.msopenjdk-11-jdk
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-${JDK_VERSION}-linux-ARCH
# Create a non-root user and group (just like .NET's image)
RUN mkdir /staging \
&& tdnf update -y \
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib \
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib jaz \
&& tdnf install -y gawk shadow-utils ca-certificates tar \
&& groupadd --system --gid=101 app \
&& useradd -l --uid=101 --gid=101 --shell /bin/false --system --create-home app \
Expand Down
2 changes: 1 addition & 1 deletion docker/distroless/Dockerfile.msopenjdk-17-jdk
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-${JDK_VERSION}-linux-ARCH
# Create a non-root user and group (just like .NET's image)
RUN mkdir /staging \
&& tdnf update -y \
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib \
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib jaz \
&& tdnf install -y gawk shadow-utils ca-certificates tar \
&& groupadd --system --gid=101 app \
&& useradd -l --uid=101 --gid=101 --shell /bin/false --system --create-home app \
Expand Down
128 changes: 64 additions & 64 deletions docker/distroless/Dockerfile.msopenjdk-21-jdk
Original file line number Diff line number Diff line change
@@ -1,64 +1,64 @@
ARG LINUX_VERSION="3.0"
ARG JDK_VERSION="21"
ARG INSTALLER_IMAGE="mcr.microsoft.com/azurelinux/base/core"
ARG INSTALLER_TAG="${LINUX_VERSION}"
ARG BASE_IMAGE="mcr.microsoft.com/azurelinux/distroless/base"
ARG BASE_TAG="${LINUX_VERSION}"
FROM ${INSTALLER_IMAGE}:${INSTALLER_TAG} AS installer
# Redeclare ARG to make it available in this build stage
ARG INSTALLER_TAG
ARG JDK_VERSION
ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-${JDK_VERSION}-linux-ARCH.tar.gz"
# Add dynamically linked packages: zlib
# Distroless base image already has tzdata ca-certificates openssl glibc
# Create a non-root user and group (just like .NET's image)
RUN mkdir /staging \
&& tdnf update -y \
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib \
&& tdnf install -y gawk shadow-utils ca-certificates tar \
&& groupadd --system --gid=101 app \
&& useradd -l --uid=101 --gid=101 --shell /bin/false --system --create-home app \
&& install -d -m 0755 -o 101 -g 101 "/staging/home/app" \
&& cat /etc/passwd | grep '^\(root\|app\):' > "/staging/etc/passwd" \
&& cat /etc/group | grep '^\(root\|app\):' > "/staging/etc/group"
# Get JDK
RUN mkdir -p /usr/lib/jvm && \
if [ $(uname -m) = "x86_64" ]; then \
JDK_URL=${JDK_URL/ARCH/x64}; \
else \
JDK_URL=${JDK_URL/ARCH/aarch64}; \
fi && \
curl --silent -L ${JDK_URL} -o /jdk.tar.gz && \
tar -xzf /jdk.tar.gz -C / && \
rm /jdk.tar.gz && \
mv /jdk-2* /usr/jdk
# Clean up staging
RUN rm -rf /staging/etc/tdnf \
&& rm -rf /staging/run/* \
&& rm -rf /staging/var/cache/tdnf \
&& rm -rf /staging/var/lib/rpm \
&& rm -rf /staging/usr/share/doc \
&& rm -rf /staging/usr/share/man \
&& rm -rf /usr/jdk/man /usr/jdk/lib/src.zip \
&& find /staging/var/log -type f -size +0 -delete
FROM ${BASE_IMAGE}:${BASE_TAG}
LABEL "Author"="Microsoft"
LABEL "Support"="Microsoft OpenJDK Support <[email protected]>"
COPY --from=installer /staging/ /
COPY --from=installer /usr/jdk/ /usr/jdk/
COPY --from=installer --chown=101:101 /staging/home/app /home/app
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
ENV JAVA_HOME=/usr/jdk
ENV PATH="$PATH:$JAVA_HOME/bin"
ENTRYPOINT [ "/usr/jdk/bin/java" ]
CMD [ "-version" ]
ARG LINUX_VERSION="3.0"
ARG JDK_VERSION="21"
ARG INSTALLER_IMAGE="mcr.microsoft.com/azurelinux/base/core"
ARG INSTALLER_TAG="${LINUX_VERSION}"
ARG BASE_IMAGE="mcr.microsoft.com/azurelinux/distroless/base"
ARG BASE_TAG="${LINUX_VERSION}"

FROM ${INSTALLER_IMAGE}:${INSTALLER_TAG} AS installer

# Redeclare ARG to make it available in this build stage
ARG INSTALLER_TAG
ARG JDK_VERSION
ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-${JDK_VERSION}-linux-ARCH.tar.gz"
Copy link
Contributor

Choose a reason for hiding this comment

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

Is this a variable or something? (Perhaps a nicety of dockerfiles?)

Suggested change
ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-${JDK_VERSION}-linux-ARCH.tar.gz"
ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-${JDK_VERSION}-linux-$ARCH.tar.gz"

Copy link
Contributor

Choose a reason for hiding this comment

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

Noup, it is a word that gets replaced with the proper architecture. It is good as it is.


# Add dynamically linked packages: zlib
# Distroless base image already has tzdata ca-certificates openssl glibc
# Create a non-root user and group (just like .NET's image)
RUN mkdir /staging \
&& tdnf update -y \
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib jaz \
&& tdnf install -y gawk shadow-utils ca-certificates tar \
&& groupadd --system --gid=101 app \
&& useradd -l --uid=101 --gid=101 --shell /bin/false --system --create-home app \
&& install -d -m 0755 -o 101 -g 101 "/staging/home/app" \
&& cat /etc/passwd | grep '^\(root\|app\):' > "/staging/etc/passwd" \
&& cat /etc/group | grep '^\(root\|app\):' > "/staging/etc/group"

# Get JDK
RUN mkdir -p /usr/lib/jvm && \
if [ $(uname -m) = "x86_64" ]; then \
JDK_URL=${JDK_URL/ARCH/x64}; \
else \
JDK_URL=${JDK_URL/ARCH/aarch64}; \
fi && \
curl --silent -L ${JDK_URL} -o /jdk.tar.gz && \
tar -xzf /jdk.tar.gz -C / && \
rm /jdk.tar.gz && \
mv /jdk-2* /usr/jdk

# Clean up staging
RUN rm -rf /staging/etc/tdnf \
&& rm -rf /staging/run/* \
&& rm -rf /staging/var/cache/tdnf \
&& rm -rf /staging/var/lib/rpm \
&& rm -rf /staging/usr/share/doc \
&& rm -rf /staging/usr/share/man \
&& rm -rf /usr/jdk/man /usr/jdk/lib/src.zip \
&& find /staging/var/log -type f -size +0 -delete

FROM ${BASE_IMAGE}:${BASE_TAG}

LABEL "Author"="Microsoft"
LABEL "Support"="Microsoft OpenJDK Support <[email protected]>"

COPY --from=installer /staging/ /
COPY --from=installer /usr/jdk/ /usr/jdk/
COPY --from=installer --chown=101:101 /staging/home/app /home/app

ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
ENV JAVA_HOME=/usr/jdk
ENV PATH="$PATH:$JAVA_HOME/bin"

ENTRYPOINT [ "/usr/jdk/bin/java" ]
CMD [ "-version" ]
2 changes: 1 addition & 1 deletion docker/distroless/Dockerfile.msopenjdk-25-jdk
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ ARG JDK_URL="https://aka.ms/download-jdk/microsoft-jdk-${JDK_VERSION}-linux-ARCH
# Create a non-root user and group (just like .NET's image)
RUN mkdir /staging \
&& tdnf update -y \
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib \
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib jaz \
&& tdnf install -y gawk shadow-utils ca-certificates tar \
&& groupadd --system --gid=101 app \
&& useradd -l --uid=101 --gid=101 --shell /bin/false --system --create-home app \
Expand Down
2 changes: 1 addition & 1 deletion docker/distroless/Dockerfile.temurin-8-jdk
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ ARG JDK_URL="https://api.adoptium.net/v3/binary/latest/${JDK_VERSION}/ga/linux/A
# Create a non-root user and group (just like .NET's image)
RUN mkdir /staging \
&& tdnf update -y \
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib \
&& tdnf install -y --releasever=${INSTALLER_TAG} --installroot /staging zlib jaz \
&& tdnf install -y gawk shadow-utils ca-certificates tar \
&& groupadd --system --gid=101 app \
&& adduser --uid 101 --gid 101 --shell /bin/false --system --create-home app \
Expand Down
48 changes: 24 additions & 24 deletions docker/mariner-cm2/Dockerfile.msopenjdk-21-jdk
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
ARG IMAGE="mcr.microsoft.com/cbl-mariner/base/core"
ARG TAG="2.0"
FROM ${IMAGE}:${TAG}
LABEL "Author"="Microsoft"
LABEL "Support"="Microsoft OpenJDK Support <[email protected]>"
ARG package="msopenjdk-21"
ARG PKGS="tzdata ca-certificates freetype shadow-utils"
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
ENV JAVA_HOME=/usr/lib/jvm/msopenjdk-21
RUN tdnf update -y && \
tdnf install -y ${package} ${PKGS} && \
tdnf clean all && \
groupadd --system --gid=101 app && \
adduser --uid 101 --gid 101 --system app && \
install -d -m 0755 -o 101 -g 101 "/home/app" && \
rm -rf /var/cache/tdnf && \
rm -rf /usr/lib/jvm/${package}/lib/src.zip && \
echo java -Xshare:dump && \
java -Xshare:dump
ARG IMAGE="mcr.microsoft.com/cbl-mariner/base/core"
ARG TAG="2.0"
FROM ${IMAGE}:${TAG}

LABEL "Author"="Microsoft"
LABEL "Support"="Microsoft OpenJDK Support <[email protected]>"

ARG package="msopenjdk-21"
ARG PKGS="tzdata ca-certificates freetype shadow-utils"

ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
ENV JAVA_HOME=/usr/lib/jvm/msopenjdk-21

RUN tdnf update -y && \
tdnf install -y ${package} ${PKGS} && \
tdnf clean all && \
groupadd --system --gid=101 app && \
adduser --uid 101 --gid 101 --system app && \
install -d -m 0755 -o 101 -g 101 "/home/app" && \
rm -rf /var/cache/tdnf && \
rm -rf /usr/lib/jvm/${package}/lib/src.zip && \
echo java -Xshare:dump && \
java -Xshare:dump

10 changes: 10 additions & 0 deletions docker/test-only/distroless/Dockerfile.testjaz
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
ARG IMGTOTEST=mcr.microsoft.com/openjdk/jdk:11-azurelinux

FROM mcr.microsoft.com/openjdk/jdk:8-azurelinux AS builder
ADD SampleApp.java /SampleApp.java
RUN javac -source 1.8 -target 1.8 SampleApp.java && jar cfe /app.jar SampleApp SampleApp.class

FROM ${IMGTOTEST}
COPY --from=builder /app.jar /app.jar
ENTRYPOINT ["jaz" ]
CMD ["-jar", "app.jar"]
9 changes: 9 additions & 0 deletions docker/test-only/regular/Dockerfile.testjaz
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
ARG IMGTOTEST=mcr.microsoft.com/openjdk/jdk:11-azurelinux

FROM mcr.microsoft.com/openjdk/jdk:8-azurelinux AS builder
ADD SampleApp.java /SampleApp.java
RUN javac -source 1.8 -target 1.8 SampleApp.java && jar cfe /app.jar SampleApp SampleApp.class

FROM ${IMGTOTEST}
COPY --from=builder /app.jar /app.jar
CMD ["jaz", "-jar", "/app.jar"]
Loading
Loading