diff --git a/releases/26.0.0.9/full/Dockerfile.ubi.ibmjava8 b/releases/26.0.0.9/full/Dockerfile.ubi.ibmjava8 index e4431fc29..432f80d92 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubi.ibmjava8 +++ b/releases/26.0.0.9/full/Dockerfile.ubi.ibmjava8 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/26.0.0.9/full/Dockerfile.ubi.openjdk11 b/releases/26.0.0.9/full/Dockerfile.ubi.openjdk11 index 2ddd2f348..13f94628f 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubi.openjdk11 +++ b/releases/26.0.0.9/full/Dockerfile.ubi.openjdk11 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/26.0.0.9/full/Dockerfile.ubi.openjdk17 b/releases/26.0.0.9/full/Dockerfile.ubi.openjdk17 index 2a36429a2..adf8e9d64 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubi.openjdk17 +++ b/releases/26.0.0.9/full/Dockerfile.ubi.openjdk17 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/26.0.0.9/full/Dockerfile.ubi.openjdk8 b/releases/26.0.0.9/full/Dockerfile.ubi.openjdk8 index 5496f8097..04b25f9ad 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubi.openjdk8 +++ b/releases/26.0.0.9/full/Dockerfile.ubi.openjdk8 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/26.0.0.9/full/Dockerfile.ubi10-micro.ibmjava8 b/releases/26.0.0.9/full/Dockerfile.ubi10-micro.ibmjava8 new file mode 100644 index 000000000..f0d5b0fd5 --- /dev/null +++ b/releases/26.0.0.9/full/Dockerfile.ubi10-micro.ibmjava8 @@ -0,0 +1,53 @@ +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.9-kernel-slim-java8-ibmjava-ubi-micro + +# ubi-micro has no package manager; install unzip from ubi-minimal and copy it in +FROM registry.access.redhat.com/ubi10/ubi-minimal AS builder +RUN microdnf -y install unzip && microdnf clean all + +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG LIBERTY_VERSION=26.0.0.9 +ARG FEATURES_SHA=971f2f2434b57f39c8329ffc075ed26ba5e23742 + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# We need unzip when using a local repo; copy it from ubi-minimal builder stage +USER root +COPY --from=builder /usr/bin/unzip /usr/bin/unzip +COPY --from=builder /usr/lib64/libbz2.so* /usr/lib64/ +USER 1001 + +# Install all features +RUN set -eux; \ + if [ ! -f /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip ]; then \ + wget -q https://repo1.maven.org/maven2/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json -O /tmp/features-$LIBERTY_VERSION.json; \ + echo "$FEATURES_SHA /tmp/features-$LIBERTY_VERSION.json" > /tmp/features-$LIBERTY_VERSION.json.sha1; \ + sha1sum -c /tmp/features-$LIBERTY_VERSION.json.sha1; \ + else \ + echo "$FEATURES_SHA /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip" > /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + sha1sum -c /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + mkdir /tmp/feature-repo-$LIBERTY_VERSION; \ + unzip -d /tmp/feature-repo-$LIBERTY_VERSION /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip; \ + cp /tmp/feature-repo-$LIBERTY_VERSION/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json /tmp; \ + export FEATURE_LOCAL_REPO=/tmp/feature-repo-$LIBERTY_VERSION; \ + export FEATURE_VERIFY=skip; \ + fi; \ + grep \"shortName\" /tmp/features-$LIBERTY_VERSION.json | sed -e 's/.* //' -e 's/,//' | xargs featureUtility installFeature --acceptLicense --noCache; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.9-kernel-slim-java8-ibmjava-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp + +COPY --chown=1001:0 server.xml /config/ + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && find /opt/ol/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk11 b/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk11 new file mode 100644 index 000000000..65554b06a --- /dev/null +++ b/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk11 @@ -0,0 +1,52 @@ +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.9-kernel-slim-java11-openj9-ubi-micro + +# ubi-micro has no package manager; install unzip from ubi-minimal and copy it in +FROM registry.access.redhat.com/ubi10/ubi-minimal AS builder +RUN microdnf -y install unzip && microdnf clean all + +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG LIBERTY_VERSION=26.0.0.9 +ARG FEATURES_SHA=971f2f2434b57f39c8329ffc075ed26ba5e23742 + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# We need unzip when using a local repo; copy it from ubi-minimal builder stage +USER root +COPY --from=builder /usr/bin/unzip /usr/bin/unzip +USER 1001 + +# Install all features +RUN set -eux; \ + if [ ! -f /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip ]; then \ + wget -q https://repo1.maven.org/maven2/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json -O /tmp/features-$LIBERTY_VERSION.json; \ + echo "$FEATURES_SHA /tmp/features-$LIBERTY_VERSION.json" > /tmp/features-$LIBERTY_VERSION.json.sha1; \ + sha1sum -c /tmp/features-$LIBERTY_VERSION.json.sha1; \ + else \ + echo "$FEATURES_SHA /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip" > /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + sha1sum -c /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + mkdir /tmp/feature-repo-$LIBERTY_VERSION; \ + unzip -d /tmp/feature-repo-$LIBERTY_VERSION /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip; \ + cp /tmp/feature-repo-$LIBERTY_VERSION/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json /tmp; \ + export FEATURE_LOCAL_REPO=/tmp/feature-repo-$LIBERTY_VERSION; \ + export FEATURE_VERIFY=skip; \ + fi; \ + grep \"shortName\" /tmp/features-$LIBERTY_VERSION.json | sed -e 's/.* //' -e 's/,//' | xargs featureUtility installFeature --acceptLicense --noCache; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.9-kernel-slim-java11-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp + +COPY --chown=1001:0 server.xml /config/ + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && find /opt/ol/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk17 b/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk17 new file mode 100644 index 000000000..5e7c7b317 --- /dev/null +++ b/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk17 @@ -0,0 +1,52 @@ +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.9-kernel-slim-java17-openj9-ubi-micro + +# ubi-micro has no package manager; install unzip from ubi-minimal and copy it in +FROM registry.access.redhat.com/ubi10/ubi-minimal AS builder +RUN microdnf -y install unzip && microdnf clean all + +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG LIBERTY_VERSION=26.0.0.9 +ARG FEATURES_SHA=971f2f2434b57f39c8329ffc075ed26ba5e23742 + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# We need unzip when using a local repo; copy it from ubi-minimal builder stage +USER root +COPY --from=builder /usr/bin/unzip /usr/bin/unzip +USER 1001 + +# Install all features +RUN set -eux; \ + if [ ! -f /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip ]; then \ + wget -q https://repo1.maven.org/maven2/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json -O /tmp/features-$LIBERTY_VERSION.json; \ + echo "$FEATURES_SHA /tmp/features-$LIBERTY_VERSION.json" > /tmp/features-$LIBERTY_VERSION.json.sha1; \ + sha1sum -c /tmp/features-$LIBERTY_VERSION.json.sha1; \ + else \ + echo "$FEATURES_SHA /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip" > /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + sha1sum -c /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + mkdir /tmp/feature-repo-$LIBERTY_VERSION; \ + unzip -d /tmp/feature-repo-$LIBERTY_VERSION /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip; \ + cp /tmp/feature-repo-$LIBERTY_VERSION/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json /tmp; \ + export FEATURE_LOCAL_REPO=/tmp/feature-repo-$LIBERTY_VERSION; \ + export FEATURE_VERIFY=skip; \ + fi; \ + grep \"shortName\" /tmp/features-$LIBERTY_VERSION.json | sed -e 's/.* //' -e 's/,//' | xargs featureUtility installFeature --acceptLicense --noCache; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.9-kernel-slim-java17-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp + +COPY --chown=1001:0 server.xml /config/ + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && find /opt/ol/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk21 b/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk21 new file mode 100644 index 000000000..76f776449 --- /dev/null +++ b/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk21 @@ -0,0 +1,52 @@ +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.9-kernel-slim-java21-openj9-ubi-micro + +# ubi-micro has no package manager; install unzip from ubi-minimal and copy it in +FROM registry.access.redhat.com/ubi10/ubi-minimal AS builder +RUN microdnf -y install unzip && microdnf clean all + +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG LIBERTY_VERSION=26.0.0.9 +ARG FEATURES_SHA=971f2f2434b57f39c8329ffc075ed26ba5e23742 + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# We need unzip when using a local repo; copy it from ubi-minimal builder stage +USER root +COPY --from=builder /usr/bin/unzip /usr/bin/unzip +USER 1001 + +# Install all features +RUN set -eux; \ + if [ ! -f /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip ]; then \ + wget -q https://repo1.maven.org/maven2/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json -O /tmp/features-$LIBERTY_VERSION.json; \ + echo "$FEATURES_SHA /tmp/features-$LIBERTY_VERSION.json" > /tmp/features-$LIBERTY_VERSION.json.sha1; \ + sha1sum -c /tmp/features-$LIBERTY_VERSION.json.sha1; \ + else \ + echo "$FEATURES_SHA /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip" > /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + sha1sum -c /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + mkdir /tmp/feature-repo-$LIBERTY_VERSION; \ + unzip -d /tmp/feature-repo-$LIBERTY_VERSION /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip; \ + cp /tmp/feature-repo-$LIBERTY_VERSION/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json /tmp; \ + export FEATURE_LOCAL_REPO=/tmp/feature-repo-$LIBERTY_VERSION; \ + export FEATURE_VERIFY=skip; \ + fi; \ + grep \"shortName\" /tmp/features-$LIBERTY_VERSION.json | sed -e 's/.* //' -e 's/,//' | xargs featureUtility installFeature --acceptLicense --noCache; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.9-kernel-slim-java21-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp + +COPY --chown=1001:0 server.xml /config/ + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && find /opt/ol/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk25 b/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk25 new file mode 100644 index 000000000..735609b2a --- /dev/null +++ b/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk25 @@ -0,0 +1,52 @@ +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.9-kernel-slim-java25-openj9-ubi-micro + +# ubi-micro has no package manager; install unzip from ubi-minimal and copy it in +FROM registry.access.redhat.com/ubi10/ubi-minimal AS builder +RUN microdnf -y install unzip && microdnf clean all + +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG LIBERTY_VERSION=26.0.0.9 +ARG FEATURES_SHA=971f2f2434b57f39c8329ffc075ed26ba5e23742 + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# We need unzip when using a local repo; copy it from ubi-minimal builder stage +USER root +COPY --from=builder /usr/bin/unzip /usr/bin/unzip +USER 1001 + +# Install all features +RUN set -eux; \ + if [ ! -f /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip ]; then \ + wget -q https://repo1.maven.org/maven2/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json -O /tmp/features-$LIBERTY_VERSION.json; \ + echo "$FEATURES_SHA /tmp/features-$LIBERTY_VERSION.json" > /tmp/features-$LIBERTY_VERSION.json.sha1; \ + sha1sum -c /tmp/features-$LIBERTY_VERSION.json.sha1; \ + else \ + echo "$FEATURES_SHA /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip" > /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + sha1sum -c /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + mkdir /tmp/feature-repo-$LIBERTY_VERSION; \ + unzip -d /tmp/feature-repo-$LIBERTY_VERSION /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip; \ + cp /tmp/feature-repo-$LIBERTY_VERSION/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json /tmp; \ + export FEATURE_LOCAL_REPO=/tmp/feature-repo-$LIBERTY_VERSION; \ + export FEATURE_VERIFY=skip; \ + fi; \ + grep \"shortName\" /tmp/features-$LIBERTY_VERSION.json | sed -e 's/.* //' -e 's/,//' | xargs featureUtility installFeature --acceptLicense --noCache; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.9-kernel-slim-java25-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp + +COPY --chown=1001:0 server.xml /config/ + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && find /opt/ol/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk8 b/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk8 new file mode 100644 index 000000000..066e749bb --- /dev/null +++ b/releases/26.0.0.9/full/Dockerfile.ubi10-micro.openjdk8 @@ -0,0 +1,52 @@ +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.9-kernel-slim-java8-openj9-ubi-micro + +# ubi-micro has no package manager; install unzip from ubi-minimal and copy it in +FROM registry.access.redhat.com/ubi10/ubi-minimal AS builder +RUN microdnf -y install unzip && microdnf clean all + +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG LIBERTY_VERSION=26.0.0.9 +ARG FEATURES_SHA=971f2f2434b57f39c8329ffc075ed26ba5e23742 + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# We need unzip when using a local repo; copy it from ubi-minimal builder stage +USER root +COPY --from=builder /usr/bin/unzip /usr/bin/unzip +USER 1001 + +# Install all features +RUN set -eux; \ + if [ ! -f /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip ]; then \ + wget -q https://repo1.maven.org/maven2/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json -O /tmp/features-$LIBERTY_VERSION.json; \ + echo "$FEATURES_SHA /tmp/features-$LIBERTY_VERSION.json" > /tmp/features-$LIBERTY_VERSION.json.sha1; \ + sha1sum -c /tmp/features-$LIBERTY_VERSION.json.sha1; \ + else \ + echo "$FEATURES_SHA /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip" > /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + sha1sum -c /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + mkdir /tmp/feature-repo-$LIBERTY_VERSION; \ + unzip -d /tmp/feature-repo-$LIBERTY_VERSION /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip; \ + cp /tmp/feature-repo-$LIBERTY_VERSION/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json /tmp; \ + export FEATURE_LOCAL_REPO=/tmp/feature-repo-$LIBERTY_VERSION; \ + export FEATURE_VERIFY=skip; \ + fi; \ + grep \"shortName\" /tmp/features-$LIBERTY_VERSION.json | sed -e 's/.* //' -e 's/,//' | xargs featureUtility installFeature --acceptLicense --noCache; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:26.0.0.9-kernel-slim-java8-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp + +COPY --chown=1001:0 server.xml /config/ + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && find /opt/ol/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.ibmjava8 b/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.ibmjava8 index 526e82288..4d331289c 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.ibmjava8 +++ b/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.ibmjava8 @@ -40,7 +40,7 @@ ARG VERBOSE=false # Copy the runtime COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp -COPY --chown=1001:0 server.xml /config/ +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml # Create a new SCC layer RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ diff --git a/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk11 b/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk11 index 9b0aaacee..45f89d66d 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk11 +++ b/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk11 @@ -40,7 +40,7 @@ ARG VERBOSE=false # Copy the runtime COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp -COPY --chown=1001:0 server.xml /config/ +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml # Create a new SCC layer RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ diff --git a/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk17 b/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk17 index 322a9d45b..736501f0e 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk17 +++ b/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk17 @@ -40,7 +40,7 @@ ARG VERBOSE=false # Copy the runtime COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp -COPY --chown=1001:0 server.xml /config/ +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml # Create a new SCC layer RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ diff --git a/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk21 b/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk21 index 07127b39c..fa5b53390 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk21 +++ b/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk21 @@ -40,7 +40,7 @@ ARG VERBOSE=false # Copy the runtime COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp -COPY --chown=1001:0 server.xml /config/ +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml # Create a new SCC layer RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ diff --git a/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk25 b/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk25 index 4b3b737f0..df298ff17 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk25 +++ b/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk25 @@ -40,7 +40,7 @@ ARG VERBOSE=false # Copy the runtime COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp -COPY --chown=1001:0 server.xml /config/ +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml # Create a new SCC layer RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ diff --git a/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk8 b/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk8 index 649f92b60..4f7f7c7d6 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk8 +++ b/releases/26.0.0.9/full/Dockerfile.ubi10-minimal.openjdk8 @@ -40,7 +40,7 @@ ARG VERBOSE=false # Copy the runtime COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp -COPY --chown=1001:0 server.xml /config/ +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml # Create a new SCC layer RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ diff --git a/releases/26.0.0.9/full/Dockerfile.ubuntu.openjdk11 b/releases/26.0.0.9/full/Dockerfile.ubuntu.openjdk11 index 49e7a100e..360d53791 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubuntu.openjdk11 +++ b/releases/26.0.0.9/full/Dockerfile.ubuntu.openjdk11 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/26.0.0.9/full/Dockerfile.ubuntu.openjdk17 b/releases/26.0.0.9/full/Dockerfile.ubuntu.openjdk17 index 41656199f..b4b35af47 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubuntu.openjdk17 +++ b/releases/26.0.0.9/full/Dockerfile.ubuntu.openjdk17 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/26.0.0.9/full/Dockerfile.ubuntu.openjdk8 b/releases/26.0.0.9/full/Dockerfile.ubuntu.openjdk8 index 09250eec7..476d68ad0 100644 --- a/releases/26.0.0.9/full/Dockerfile.ubuntu.openjdk8 +++ b/releases/26.0.0.9/full/Dockerfile.ubuntu.openjdk8 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/26.0.0.9/full/helpers/build/configuration_snippets/http-port-disabled.xml b/releases/26.0.0.9/full/helpers/build/configuration_snippets/http-port-disabled.xml new file mode 100644 index 000000000..4abd49cd7 --- /dev/null +++ b/releases/26.0.0.9/full/helpers/build/configuration_snippets/http-port-disabled.xml @@ -0,0 +1,4 @@ + + + + diff --git a/releases/26.0.0.9/full/helpers/build/configuration_snippets/update-trigger-disabled.xml b/releases/26.0.0.9/full/helpers/build/configuration_snippets/update-trigger-disabled.xml new file mode 100644 index 000000000..b97391b58 --- /dev/null +++ b/releases/26.0.0.9/full/helpers/build/configuration_snippets/update-trigger-disabled.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/releases/26.0.0.9/full/helpers/build/configure.sh b/releases/26.0.0.9/full/helpers/build/configure.sh index e7b385342..41d30dfb5 100755 --- a/releases/26.0.0.9/full/helpers/build/configure.sh +++ b/releases/26.0.0.9/full/helpers/build/configure.sh @@ -18,6 +18,17 @@ function main() { #Check for each Liberty value-add functionality + # Disable automatic configuration file monitoring (security hardening). + if [ "$SKIP_UPDATE_TRIGGER_DISABLED" != "true" ]; then + cp $SNIPPETS_SOURCE/update-trigger-disabled.xml $SNIPPETS_TARGET_DEFAULTS/update-trigger-disabled.xml + chmod g+rw $SNIPPETS_TARGET_DEFAULTS/update-trigger-disabled.xml + fi + + # HTTP port is disabled by default. Set ENABLE_HTTP_PORT=true to re-enable port 9080. + if [ "$ENABLE_HTTP_PORT" != "true" ]; then + cp $SNIPPETS_SOURCE/http-port-disabled.xml $SNIPPETS_TARGET_DEFAULTS/http-port-disabled.xml + fi + # MicroProfile Health if [ "$MP_HEALTH_CHECK" == "true" ]; then cp $SNIPPETS_SOURCE/mp-health-check.xml $SNIPPETS_TARGET/mp-health-check.xml diff --git a/releases/26.0.0.9/full/helpers/build/features.sh b/releases/26.0.0.9/full/helpers/build/features.sh new file mode 100755 index 000000000..7595603ec --- /dev/null +++ b/releases/26.0.0.9/full/helpers/build/features.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +. /opt/ol/helpers/build/internal/logger.sh + +set -Eeo pipefail + +##Define variables for XML snippets source and target paths +SNIPPETS_SOURCE=/opt/ol/helpers/build/configuration_snippets +SNIPPETS_TARGET=/config/configDropins/overrides +SNIPPETS_TARGET_DEFAULTS=/config/configDropins/defaults +mkdir -p ${SNIPPETS_TARGET} +mkdir -p ${SNIPPETS_TARGET_DEFAULTS} + +# Session Caching +if [ -n "$INFINISPAN_SERVICE_NAME" ] || [ "${HZ_SESSION_CACHE}" == "client" ] || [ "${HZ_SESSION_CACHE}" == "embedded" ]; then + cp ${SNIPPETS_SOURCE}/sessioncache-features.xml ${SNIPPETS_TARGET}/sessioncache-features.xml + chmod g+rw $SNIPPETS_TARGET/sessioncache-features.xml +fi + +# SSO +if [[ -n "$SEC_SSO_PROVIDERS" ]]; then + cp $SNIPPETS_SOURCE/sso-features.xml $SNIPPETS_TARGET_DEFAULTS +fi + +# Key Store +if [ "$SSL" == "true" ] || [ "$TLS" == "true" ]; then + cp $SNIPPETS_SOURCE/tls.xml $SNIPPETS_TARGET/tls.xml +fi +# Install necessary features using featureUtility +featureUtility installServerFeatures --acceptLicense defaultServer --noCache +find /opt/ol/wlp/lib /opt/ol/wlp/bin ! -perm -g=rw -print0 | xargs -0 -r chmod g+rw + +# Validate the Liberty installation integrity after feature installation +if [ "$SKIP_FEATURE_VALIDATE" != "true" ]; then + /opt/ol/wlp/bin/productInfo validate +fi + +echo "features.sh script has been run" > /logs/features.log + diff --git a/releases/26.0.0.9/full/helpers/build/populate_scc.sh b/releases/26.0.0.9/full/helpers/build/populate_scc.sh index 1012a07ac..01e122d9d 100755 --- a/releases/26.0.0.9/full/helpers/build/populate_scc.sh +++ b/releases/26.0.0.9/full/helpers/build/populate_scc.sh @@ -1,15 +1,28 @@ #!/bin/bash . /opt/ol/helpers/build/internal/logger.sh +# Use curl/wget to warm endpoints +if command -v curl > /dev/null 2>&1; then + http_get() { curl --silent --output /dev/null --show-error --fail --max-time 5 --insecure "$1"; } +else + http_get() { wget -q --no-check-certificate -O /dev/null -T 5 "$1"; } +fi + set -Eeo pipefail SCC_SIZE="80m" # Default size of the SCC layer. ITERATIONS=2 # Number of iterations to run to populate it. TRIM_SCC=yes # Trim the SCC to eliminate any wasted space. WARM_ENDPOINT=true -WARM_ENDPOINT_URL=localhost:9080/ WARM_OPENAPI_ENDPOINT=true -WARM_OPENAPI_ENDPOINT_URL=localhost:9080/openapi + +# Default warm URLs based on ENABLE_HTTP_PORT, with HTTP_PORT/HTTPS_PORT overrides. +if [ "$ENABLE_HTTP_PORT" == "true" ]; then + WARM_ENDPOINT_URL="http://localhost:${HTTP_PORT:-9080}/" +else + WARM_ENDPOINT_URL="https://localhost:${HTTPS_PORT:-9443}/" +fi +WARM_OPENAPI_ENDPOINT_URL="${WARM_ENDPOINT_URL}openapi" # If this directory exists and has at least ug=rwx permissions, assume the base image includes an SCC called 'openj9_system_scc' and build on it. # If not, build on our own SCC. @@ -81,10 +94,10 @@ do -s Size of the SCC in megabytes (m suffix required). (Default: $SCC_SIZE) -t Trim the SCC to eliminate most of the free space, if any. -d Don't trim the SCC. - -w Use curl to warm an endpoint during SCC creation. (Default: $WARM_ENDPOINT) + -w Use curl/wget to warm an endpoint during SCC creation. (Default: $WARM_ENDPOINT) -c Do not warm an endpoint during SCC creation. -u The URL endpoint to warm during SCC creation. (Default: $WARM_ENDPOINT_URL) - -m Use curl to warm the openapi endpoint during SCC creation. (Default: $WARM_OPENAPI_ENDPOINT) + -m Use curl/wget to warm the openapi endpoint during SCC creation. (Default: $WARM_OPENAPI_ENDPOINT) -l Do not warm the openapi endpoint during SCC creation. -o The Open API URL endpoint to warm during SCC creation. (Default: $WARM_ENDPOINT_OPENAPI_URL) @@ -117,11 +130,11 @@ then if [ ${WARM_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" fi if [ ${WARM_OPENAPI_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" fi /opt/ol/wlp/bin/server stop @@ -152,11 +165,11 @@ do if [ ${WARM_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" fi if [ ${WARM_OPENAPI_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" fi /opt/ol/wlp/bin/server stop diff --git a/releases/26.0.0.9/full/server-http-port-enabled.xml b/releases/26.0.0.9/full/server-http-port-enabled.xml new file mode 100644 index 000000000..120800ea8 --- /dev/null +++ b/releases/26.0.0.9/full/server-http-port-enabled.xml @@ -0,0 +1,37 @@ + + + + + + javaee-8.0 + + + + + + + + + + + + + + + + + + + + + + diff --git a/releases/26.0.0.9/full/server.xml b/releases/26.0.0.9/full/server.xml index 120800ea8..8b57a2bd9 100644 --- a/releases/26.0.0.9/full/server.xml +++ b/releases/26.0.0.9/full/server.xml @@ -25,7 +25,7 @@ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.ibmjava8 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.ibmjava8 index 758d21c1c..03adfa8b0 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.ibmjava8 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.ibmjava8 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.openjdk11 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.openjdk11 index d7edac51e..7705049e5 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.openjdk11 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.openjdk11 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.openjdk17 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.openjdk17 index 5288e978b..b57572846 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.openjdk17 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.openjdk17 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.openjdk8 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.openjdk8 index 4d5e8cd3e..171cfd6de 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.openjdk8 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi.openjdk8 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.ibmjava8 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.ibmjava8 new file mode 100644 index 000000000..930df335d --- /dev/null +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.ibmjava8 @@ -0,0 +1,177 @@ +# This relies on a base image which needs to be built seperately +# curl https://raw.githubusercontent.com/ibmruntimes/ci.docker/main/ibmjava/8/jre/ubi-min/Dockerfile -o java/Dockerfile.ubi10.minimal +# The above file needs editing before it is built: +# This changes to a UBI10 base, and corrects the microdnf command to work on UBI10. +# $> sed -i -e 's/ubi8/ubi10/' -e 's/microdnf install/microdnf -y install/' -e 's/microdnf update/microdnf update -y/' Dockerfile.ubi10-minimal.ibmjava8 +# $> rm ./java/Dockerfile.ubi10.minimal.bak +# Then build and tag as 'ibmjava:10-ubi' +# $> docker build -t ibmjava:10-ubi -f ./java/Dockerfile.ubi10.minimal java + +FROM ibmjava:10-ubi AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_SHA=4ec644ee059a8d54a26c326763fd404a6baf1570 +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-kernel/$LIBERTY_VERSION/openliberty-kernel-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ +# && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibmjava:8-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty with IBM's Java and UBI 10 micro" \ + description="This image contains the Open Liberty runtime with IBM's Java and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libreadline.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libgnutls.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libidn2.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libunistring.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libuuid.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + IBM_JAVA_OPTIONS="-Xshareclasses:name=liberty,readonly,nonfatal,cacheDir=/output/.classCache/ -Dosgi.checkConfiguration=false ${IBM_JAVA_OPTIONS}" + +USER 1001 + +EXPOSE 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] + diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk11 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk11 new file mode 100755 index 000000000..71bdb7c03 --- /dev/null +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk11 @@ -0,0 +1,164 @@ +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_SHA=4ec644ee059a8d54a26c326763fd404a6baf1570 +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-kernel/$LIBERTY_VERSION/openliberty-kernel-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ + && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibm-semeru-runtimes:open-11-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty with IBM Semeru Runtime Open Edition OpenJDK 11 with OpenJ9 and UBI 10 micro" \ + description="This image contains the Open Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK 11 with OpenJ9 and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && if [ -e /etc/instanton.ld.so.cache ]; then chmod g+w /etc/ld.so.cache; fi \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + OPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal -Dosgi.checkConfiguration=false" + +USER 1001 + +EXPOSE 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] + diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk17 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk17 new file mode 100755 index 000000000..bcba29407 --- /dev/null +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk17 @@ -0,0 +1,164 @@ +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_SHA=4ec644ee059a8d54a26c326763fd404a6baf1570 +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-kernel/$LIBERTY_VERSION/openliberty-kernel-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ + && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibm-semeru-runtimes:open-17-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty with IBM Semeru Runtime Open Edition OpenJDK 17 with OpenJ9 and UBI 10 micro" \ + description="This image contains the Open Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK 17 with OpenJ9 and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && if [ -e /etc/instanton.ld.so.cache ]; then chmod g+w /etc/ld.so.cache; fi \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + OPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal -Dosgi.checkConfiguration=false" + +USER 1001 + +EXPOSE 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] + diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk21 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk21 new file mode 100755 index 000000000..efb56b825 --- /dev/null +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk21 @@ -0,0 +1,164 @@ +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_SHA=4ec644ee059a8d54a26c326763fd404a6baf1570 +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-kernel/$LIBERTY_VERSION/openliberty-kernel-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ + && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibm-semeru-runtimes:open-21-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty with IBM Semeru Runtime Open Edition OpenJDK 21 with OpenJ9 and UBI 10 micro" \ + description="This image contains the Open Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK 21 with OpenJ9 and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && if [ -e /etc/instanton.ld.so.cache ]; then chmod g+w /etc/ld.so.cache; fi \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + OPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal -Dosgi.checkConfiguration=false" + +USER 1001 + +EXPOSE 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] + diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk25 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk25 new file mode 100755 index 000000000..3ceeebcd0 --- /dev/null +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk25 @@ -0,0 +1,164 @@ +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_SHA=4ec644ee059a8d54a26c326763fd404a6baf1570 +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-kernel/$LIBERTY_VERSION/openliberty-kernel-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ + && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibm-semeru-runtimes:open-25-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty with IBM Semeru Runtime Open Edition OpenJDK 25 with OpenJ9 and UBI 10 micro" \ + description="This image contains the Open Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK 25 with OpenJ9 and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && if [ -e /etc/instanton.ld.so.cache ]; then chmod g+w /etc/ld.so.cache; fi \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + OPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal -Dosgi.checkConfiguration=false" + +USER 1001 + +EXPOSE 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] + diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk8 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk8 new file mode 100755 index 000000000..f22121216 --- /dev/null +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-micro.openjdk8 @@ -0,0 +1,164 @@ +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_SHA=4ec644ee059a8d54a26c326763fd404a6baf1570 +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-kernel/$LIBERTY_VERSION/openliberty-kernel-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ + && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibm-semeru-runtimes:open-8-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty with IBM Semeru Runtime Open Edition OpenJDK 8 with OpenJ9 and UBI 10 micro" \ + description="This image contains the Open Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK 8 with OpenJ9 and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && if [ -e /etc/instanton.ld.so.cache ]; then chmod g+w /etc/ld.so.cache; fi \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + OPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal -Dosgi.checkConfiguration=false" + +USER 1001 + +EXPOSE 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] + diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.ibmjava8 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.ibmjava8 index ba9301d09..d626bf031 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.ibmjava8 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.ibmjava8 @@ -109,7 +109,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk11 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk11 index 7c010a0f7..63f61c2e5 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk11 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk11 @@ -100,7 +100,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk17 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk17 index af653730a..8f162f27b 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk17 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk17 @@ -100,7 +100,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk21 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk21 index 8ca52bfe2..689c8ecf8 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk21 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk21 @@ -100,7 +100,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk25 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk25 index 096bab682..4aee76853 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk25 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk25 @@ -100,7 +100,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk8 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk8 index e46ed4ead..5449ac26f 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk8 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubi10-minimal.openjdk8 @@ -100,7 +100,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk11 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk11 index b07c296ff..3556b7f26 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk11 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk11 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk17 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk17 index 80415b3f3..ea56a05ef 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk17 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk17 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk8 b/releases/26.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk8 index d4971090e..e9c578484 100644 --- a/releases/26.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk8 +++ b/releases/26.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk8 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/26.0.0.9/kernel-slim/helpers/build/configuration_snippets/http-port-disabled.xml b/releases/26.0.0.9/kernel-slim/helpers/build/configuration_snippets/http-port-disabled.xml new file mode 100644 index 000000000..4abd49cd7 --- /dev/null +++ b/releases/26.0.0.9/kernel-slim/helpers/build/configuration_snippets/http-port-disabled.xml @@ -0,0 +1,4 @@ + + + + diff --git a/releases/26.0.0.9/kernel-slim/helpers/build/configuration_snippets/update-trigger-disabled.xml b/releases/26.0.0.9/kernel-slim/helpers/build/configuration_snippets/update-trigger-disabled.xml new file mode 100644 index 000000000..b97391b58 --- /dev/null +++ b/releases/26.0.0.9/kernel-slim/helpers/build/configuration_snippets/update-trigger-disabled.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/releases/26.0.0.9/kernel-slim/helpers/build/configure.sh b/releases/26.0.0.9/kernel-slim/helpers/build/configure.sh index 5341dde16..75a8bbb3f 100755 --- a/releases/26.0.0.9/kernel-slim/helpers/build/configure.sh +++ b/releases/26.0.0.9/kernel-slim/helpers/build/configure.sh @@ -18,6 +18,17 @@ function main() { #Check for each Liberty value-add functionality + # Disable automatic configuration file monitoring (security hardening). + if [ "$SKIP_UPDATE_TRIGGER_DISABLED" != "true" ]; then + cp $SNIPPETS_SOURCE/update-trigger-disabled.xml $SNIPPETS_TARGET_DEFAULTS/update-trigger-disabled.xml + chmod g+rw $SNIPPETS_TARGET_DEFAULTS/update-trigger-disabled.xml + fi + + # HTTP port is disabled by default. Set ENABLE_HTTP_PORT=true to re-enable port 9080. + if [ "$ENABLE_HTTP_PORT" != "true" ]; then + cp $SNIPPETS_SOURCE/http-port-disabled.xml $SNIPPETS_TARGET_DEFAULTS/http-port-disabled.xml + fi + # Infinispan Session Caching if [[ -n "$INFINISPAN_SERVICE_NAME" ]]; then cp ${SNIPPETS_SOURCE}/infinispan-client-sessioncache.xml ${SNIPPETS_TARGET}/infinispan-client-sessioncache.xml diff --git a/releases/26.0.0.9/kernel-slim/helpers/build/features.sh b/releases/26.0.0.9/kernel-slim/helpers/build/features.sh index 5b4800ebc..7595603ec 100755 --- a/releases/26.0.0.9/kernel-slim/helpers/build/features.sh +++ b/releases/26.0.0.9/kernel-slim/helpers/build/features.sh @@ -26,8 +26,14 @@ fi if [ "$SSL" == "true" ] || [ "$TLS" == "true" ]; then cp $SNIPPETS_SOURCE/tls.xml $SNIPPETS_TARGET/tls.xml fi - # Install necessary features using featureUtility featureUtility installServerFeatures --acceptLicense defaultServer --noCache find /opt/ol/wlp/lib /opt/ol/wlp/bin ! -perm -g=rw -print0 | xargs -0 -r chmod g+rw +# Validate the Liberty installation integrity after feature installation +if [ "$SKIP_FEATURE_VALIDATE" != "true" ]; then + /opt/ol/wlp/bin/productInfo validate +fi + +echo "features.sh script has been run" > /logs/features.log + diff --git a/releases/26.0.0.9/kernel-slim/helpers/build/populate_scc.sh b/releases/26.0.0.9/kernel-slim/helpers/build/populate_scc.sh index 1012a07ac..01e122d9d 100755 --- a/releases/26.0.0.9/kernel-slim/helpers/build/populate_scc.sh +++ b/releases/26.0.0.9/kernel-slim/helpers/build/populate_scc.sh @@ -1,15 +1,28 @@ #!/bin/bash . /opt/ol/helpers/build/internal/logger.sh +# Use curl/wget to warm endpoints +if command -v curl > /dev/null 2>&1; then + http_get() { curl --silent --output /dev/null --show-error --fail --max-time 5 --insecure "$1"; } +else + http_get() { wget -q --no-check-certificate -O /dev/null -T 5 "$1"; } +fi + set -Eeo pipefail SCC_SIZE="80m" # Default size of the SCC layer. ITERATIONS=2 # Number of iterations to run to populate it. TRIM_SCC=yes # Trim the SCC to eliminate any wasted space. WARM_ENDPOINT=true -WARM_ENDPOINT_URL=localhost:9080/ WARM_OPENAPI_ENDPOINT=true -WARM_OPENAPI_ENDPOINT_URL=localhost:9080/openapi + +# Default warm URLs based on ENABLE_HTTP_PORT, with HTTP_PORT/HTTPS_PORT overrides. +if [ "$ENABLE_HTTP_PORT" == "true" ]; then + WARM_ENDPOINT_URL="http://localhost:${HTTP_PORT:-9080}/" +else + WARM_ENDPOINT_URL="https://localhost:${HTTPS_PORT:-9443}/" +fi +WARM_OPENAPI_ENDPOINT_URL="${WARM_ENDPOINT_URL}openapi" # If this directory exists and has at least ug=rwx permissions, assume the base image includes an SCC called 'openj9_system_scc' and build on it. # If not, build on our own SCC. @@ -81,10 +94,10 @@ do -s Size of the SCC in megabytes (m suffix required). (Default: $SCC_SIZE) -t Trim the SCC to eliminate most of the free space, if any. -d Don't trim the SCC. - -w Use curl to warm an endpoint during SCC creation. (Default: $WARM_ENDPOINT) + -w Use curl/wget to warm an endpoint during SCC creation. (Default: $WARM_ENDPOINT) -c Do not warm an endpoint during SCC creation. -u The URL endpoint to warm during SCC creation. (Default: $WARM_ENDPOINT_URL) - -m Use curl to warm the openapi endpoint during SCC creation. (Default: $WARM_OPENAPI_ENDPOINT) + -m Use curl/wget to warm the openapi endpoint during SCC creation. (Default: $WARM_OPENAPI_ENDPOINT) -l Do not warm the openapi endpoint during SCC creation. -o The Open API URL endpoint to warm during SCC creation. (Default: $WARM_ENDPOINT_OPENAPI_URL) @@ -117,11 +130,11 @@ then if [ ${WARM_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" fi if [ ${WARM_OPENAPI_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" fi /opt/ol/wlp/bin/server stop @@ -152,11 +165,11 @@ do if [ ${WARM_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" fi if [ ${WARM_OPENAPI_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" fi /opt/ol/wlp/bin/server stop diff --git a/releases/latest/beta/Dockerfile.ubi10-micro.openjdk25 b/releases/latest/beta/Dockerfile.ubi10-micro.openjdk25 new file mode 100644 index 000000000..9a6edafc1 --- /dev/null +++ b/releases/latest/beta/Dockerfile.ubi10-micro.openjdk25 @@ -0,0 +1,165 @@ +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.10-beta +ARG LIBERTY_SHA=f0429c01dd56f8ee1eb2a84095de7697ae9e1a0c +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/beta/openliberty-runtime/$LIBERTY_VERSION/openliberty-runtime-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ + && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibm-semeru-runtimes:open-25-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.10-beta +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty Beta" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty Beta with IBM Semeru Runtime Open Edition OpenJDK 25 with OpenJ9 and UBI 10 micro" \ + description="This image contains the Open Liberty beta runtime with IBM Semeru Runtime Open Edition OpenJDK 25 with OpenJ9 and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create --template=javaee8 \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && mkdir -p /config/dropins \ + && mkdir -p /config/apps \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && if [ -e /etc/instanton.ld.so.cache ]; then chmod g+w /etc/ld.so.cache; fi \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + OPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal -Dosgi.checkConfiguration=false" + +USER 1001 + +EXPOSE 9080 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] diff --git a/releases/latest/beta/Dockerfile.ubi10-minimal.openjdk25 b/releases/latest/beta/Dockerfile.ubi10-minimal.openjdk25 index 58576aa80..d15f32a51 100644 --- a/releases/latest/beta/Dockerfile.ubi10-minimal.openjdk25 +++ b/releases/latest/beta/Dockerfile.ubi10-minimal.openjdk25 @@ -100,7 +100,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/latest/beta/Dockerfile.ubuntu.openjdk11 b/releases/latest/beta/Dockerfile.ubuntu.openjdk11 index 90aef0f8c..13c575c30 100644 --- a/releases/latest/beta/Dockerfile.ubuntu.openjdk11 +++ b/releases/latest/beta/Dockerfile.ubuntu.openjdk11 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/latest/beta/Dockerfile.ubuntu.openjdk17 b/releases/latest/beta/Dockerfile.ubuntu.openjdk17 index de5514b3a..7ae5d9c98 100644 --- a/releases/latest/beta/Dockerfile.ubuntu.openjdk17 +++ b/releases/latest/beta/Dockerfile.ubuntu.openjdk17 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/latest/beta/Dockerfile.ubuntu.openjdk8 b/releases/latest/beta/Dockerfile.ubuntu.openjdk8 index 39b0b4827..ddbcad3be 100644 --- a/releases/latest/beta/Dockerfile.ubuntu.openjdk8 +++ b/releases/latest/beta/Dockerfile.ubuntu.openjdk8 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/latest/beta/helpers/build/configuration_snippets/http-port-disabled.xml b/releases/latest/beta/helpers/build/configuration_snippets/http-port-disabled.xml new file mode 100644 index 000000000..4abd49cd7 --- /dev/null +++ b/releases/latest/beta/helpers/build/configuration_snippets/http-port-disabled.xml @@ -0,0 +1,4 @@ + + + + diff --git a/releases/latest/beta/helpers/build/configuration_snippets/update-trigger-disabled.xml b/releases/latest/beta/helpers/build/configuration_snippets/update-trigger-disabled.xml new file mode 100644 index 000000000..b97391b58 --- /dev/null +++ b/releases/latest/beta/helpers/build/configuration_snippets/update-trigger-disabled.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/releases/latest/beta/helpers/build/configure.sh b/releases/latest/beta/helpers/build/configure.sh index e7b385342..41d30dfb5 100755 --- a/releases/latest/beta/helpers/build/configure.sh +++ b/releases/latest/beta/helpers/build/configure.sh @@ -18,6 +18,17 @@ function main() { #Check for each Liberty value-add functionality + # Disable automatic configuration file monitoring (security hardening). + if [ "$SKIP_UPDATE_TRIGGER_DISABLED" != "true" ]; then + cp $SNIPPETS_SOURCE/update-trigger-disabled.xml $SNIPPETS_TARGET_DEFAULTS/update-trigger-disabled.xml + chmod g+rw $SNIPPETS_TARGET_DEFAULTS/update-trigger-disabled.xml + fi + + # HTTP port is disabled by default. Set ENABLE_HTTP_PORT=true to re-enable port 9080. + if [ "$ENABLE_HTTP_PORT" != "true" ]; then + cp $SNIPPETS_SOURCE/http-port-disabled.xml $SNIPPETS_TARGET_DEFAULTS/http-port-disabled.xml + fi + # MicroProfile Health if [ "$MP_HEALTH_CHECK" == "true" ]; then cp $SNIPPETS_SOURCE/mp-health-check.xml $SNIPPETS_TARGET/mp-health-check.xml diff --git a/releases/latest/beta/helpers/build/populate_scc.sh b/releases/latest/beta/helpers/build/populate_scc.sh index f08050153..01e122d9d 100755 --- a/releases/latest/beta/helpers/build/populate_scc.sh +++ b/releases/latest/beta/helpers/build/populate_scc.sh @@ -1,15 +1,28 @@ #!/bin/bash . /opt/ol/helpers/build/internal/logger.sh +# Use curl/wget to warm endpoints +if command -v curl > /dev/null 2>&1; then + http_get() { curl --silent --output /dev/null --show-error --fail --max-time 5 --insecure "$1"; } +else + http_get() { wget -q --no-check-certificate -O /dev/null -T 5 "$1"; } +fi + set -Eeo pipefail SCC_SIZE="80m" # Default size of the SCC layer. ITERATIONS=2 # Number of iterations to run to populate it. TRIM_SCC=yes # Trim the SCC to eliminate any wasted space. WARM_ENDPOINT=true -WARM_ENDPOINT_URL=localhost:9080/ WARM_OPENAPI_ENDPOINT=true -WARM_OPENAPI_ENDPOINT_URL=localhost:9080/openapi + +# Default warm URLs based on ENABLE_HTTP_PORT, with HTTP_PORT/HTTPS_PORT overrides. +if [ "$ENABLE_HTTP_PORT" == "true" ]; then + WARM_ENDPOINT_URL="http://localhost:${HTTP_PORT:-9080}/" +else + WARM_ENDPOINT_URL="https://localhost:${HTTPS_PORT:-9443}/" +fi +WARM_OPENAPI_ENDPOINT_URL="${WARM_ENDPOINT_URL}openapi" # If this directory exists and has at least ug=rwx permissions, assume the base image includes an SCC called 'openj9_system_scc' and build on it. # If not, build on our own SCC. @@ -29,7 +42,12 @@ fi # option to revert to the old criteria, which results in AOT code that is more compatible, on average, with typical heap sizes/positions. # The option has no effect on later JDKs. # Using -XX:+IProfileDuringStartupPhase to enforce IProfiler collection during the startup phase to better populate the SCC. -export OPENJ9_JAVA_OPTIONS="-XX:+OriginalJDK8HeapSizeCompatibilityMode -XX:+IProfileDuringStartupPhase $SCC" +# Disable GCContainerHeuristics for ibmjava JVMs as workaround for ibmjava 8.0.8.70 build failures +GC_OPT="" +if [ -d "/opt/ibm/java" ]; then + GC_OPT="-XX:-GCContainerHeuristics " +fi +export OPENJ9_JAVA_OPTIONS="${GC_OPT}-XX:+OriginalJDK8HeapSizeCompatibilityMode -XX:+IProfileDuringStartupPhase $SCC" export IBM_JAVA_OPTIONS="$OPENJ9_JAVA_OPTIONS" CREATE_LAYER="$OPENJ9_JAVA_OPTIONS,createLayer,groupAccess" DESTROY_LAYER="$OPENJ9_JAVA_OPTIONS,destroy" @@ -76,10 +94,10 @@ do -s Size of the SCC in megabytes (m suffix required). (Default: $SCC_SIZE) -t Trim the SCC to eliminate most of the free space, if any. -d Don't trim the SCC. - -w Use curl to warm an endpoint during SCC creation. (Default: $WARM_ENDPOINT) + -w Use curl/wget to warm an endpoint during SCC creation. (Default: $WARM_ENDPOINT) -c Do not warm an endpoint during SCC creation. -u The URL endpoint to warm during SCC creation. (Default: $WARM_ENDPOINT_URL) - -m Use curl to warm the openapi endpoint during SCC creation. (Default: $WARM_OPENAPI_ENDPOINT) + -m Use curl/wget to warm the openapi endpoint during SCC creation. (Default: $WARM_OPENAPI_ENDPOINT) -l Do not warm the openapi endpoint during SCC creation. -o The Open API URL endpoint to warm during SCC creation. (Default: $WARM_ENDPOINT_OPENAPI_URL) @@ -112,11 +130,11 @@ then if [ ${WARM_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" fi if [ ${WARM_OPENAPI_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" fi /opt/ol/wlp/bin/server stop @@ -147,11 +165,11 @@ do if [ ${WARM_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" fi if [ ${WARM_OPENAPI_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" fi /opt/ol/wlp/bin/server stop diff --git a/releases/latest/full/Dockerfile.ubi.ibmjava8 b/releases/latest/full/Dockerfile.ubi.ibmjava8 index e4431fc29..432f80d92 100644 --- a/releases/latest/full/Dockerfile.ubi.ibmjava8 +++ b/releases/latest/full/Dockerfile.ubi.ibmjava8 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/latest/full/Dockerfile.ubi.openjdk11 b/releases/latest/full/Dockerfile.ubi.openjdk11 index 2ddd2f348..13f94628f 100644 --- a/releases/latest/full/Dockerfile.ubi.openjdk11 +++ b/releases/latest/full/Dockerfile.ubi.openjdk11 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/latest/full/Dockerfile.ubi.openjdk17 b/releases/latest/full/Dockerfile.ubi.openjdk17 index 2a36429a2..adf8e9d64 100644 --- a/releases/latest/full/Dockerfile.ubi.openjdk17 +++ b/releases/latest/full/Dockerfile.ubi.openjdk17 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/latest/full/Dockerfile.ubi.openjdk8 b/releases/latest/full/Dockerfile.ubi.openjdk8 index 5496f8097..04b25f9ad 100644 --- a/releases/latest/full/Dockerfile.ubi.openjdk8 +++ b/releases/latest/full/Dockerfile.ubi.openjdk8 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/latest/full/Dockerfile.ubi10-micro.ibmjava8 b/releases/latest/full/Dockerfile.ubi10-micro.ibmjava8 new file mode 100644 index 000000000..0a4d48c18 --- /dev/null +++ b/releases/latest/full/Dockerfile.ubi10-micro.ibmjava8 @@ -0,0 +1,53 @@ +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:kernel-slim-java8-ibmjava-ubi-micro + +# ubi-micro has no package manager; install unzip from ubi-minimal and copy it in +FROM registry.access.redhat.com/ubi10/ubi-minimal AS builder +RUN microdnf -y install unzip && microdnf clean all + +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG LIBERTY_VERSION=26.0.0.9 +ARG FEATURES_SHA=971f2f2434b57f39c8329ffc075ed26ba5e23742 + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# We need unzip when using a local repo; copy it from ubi-minimal builder stage +USER root +COPY --from=builder /usr/bin/unzip /usr/bin/unzip +COPY --from=builder /usr/lib64/libbz2.so* /usr/lib64/ +USER 1001 + +# Install all features +RUN set -eux; \ + if [ ! -f /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip ]; then \ + wget -q https://repo1.maven.org/maven2/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json -O /tmp/features-$LIBERTY_VERSION.json; \ + echo "$FEATURES_SHA /tmp/features-$LIBERTY_VERSION.json" > /tmp/features-$LIBERTY_VERSION.json.sha1; \ + sha1sum -c /tmp/features-$LIBERTY_VERSION.json.sha1; \ + else \ + echo "$FEATURES_SHA /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip" > /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + sha1sum -c /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + mkdir /tmp/feature-repo-$LIBERTY_VERSION; \ + unzip -d /tmp/feature-repo-$LIBERTY_VERSION /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip; \ + cp /tmp/feature-repo-$LIBERTY_VERSION/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json /tmp; \ + export FEATURE_LOCAL_REPO=/tmp/feature-repo-$LIBERTY_VERSION; \ + export FEATURE_VERIFY=skip; \ + fi; \ + grep \"shortName\" /tmp/features-$LIBERTY_VERSION.json | sed -e 's/.* //' -e 's/,//' | xargs featureUtility installFeature --acceptLicense --noCache; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:kernel-slim-java8-ibmjava-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp + +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && find /opt/ol/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/releases/latest/full/Dockerfile.ubi10-micro.openjdk11 b/releases/latest/full/Dockerfile.ubi10-micro.openjdk11 new file mode 100644 index 000000000..0dbfdc002 --- /dev/null +++ b/releases/latest/full/Dockerfile.ubi10-micro.openjdk11 @@ -0,0 +1,52 @@ +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:kernel-slim-java11-openj9-ubi-micro + +# ubi-micro has no package manager; install unzip from ubi-minimal and copy it in +FROM registry.access.redhat.com/ubi10/ubi-minimal AS builder +RUN microdnf -y install unzip && microdnf clean all + +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG LIBERTY_VERSION=26.0.0.9 +ARG FEATURES_SHA=971f2f2434b57f39c8329ffc075ed26ba5e23742 + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# We need unzip when using a local repo; copy it from ubi-minimal builder stage +USER root +COPY --from=builder /usr/bin/unzip /usr/bin/unzip +USER 1001 + +# Install all features +RUN set -eux; \ + if [ ! -f /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip ]; then \ + wget -q https://repo1.maven.org/maven2/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json -O /tmp/features-$LIBERTY_VERSION.json; \ + echo "$FEATURES_SHA /tmp/features-$LIBERTY_VERSION.json" > /tmp/features-$LIBERTY_VERSION.json.sha1; \ + sha1sum -c /tmp/features-$LIBERTY_VERSION.json.sha1; \ + else \ + echo "$FEATURES_SHA /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip" > /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + sha1sum -c /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + mkdir /tmp/feature-repo-$LIBERTY_VERSION; \ + unzip -d /tmp/feature-repo-$LIBERTY_VERSION /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip; \ + cp /tmp/feature-repo-$LIBERTY_VERSION/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json /tmp; \ + export FEATURE_LOCAL_REPO=/tmp/feature-repo-$LIBERTY_VERSION; \ + export FEATURE_VERIFY=skip; \ + fi; \ + grep \"shortName\" /tmp/features-$LIBERTY_VERSION.json | sed -e 's/.* //' -e 's/,//' | xargs featureUtility installFeature --acceptLicense --noCache; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:kernel-slim-java11-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp + +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && find /opt/ol/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/releases/latest/full/Dockerfile.ubi10-micro.openjdk17 b/releases/latest/full/Dockerfile.ubi10-micro.openjdk17 new file mode 100644 index 000000000..c5064ee17 --- /dev/null +++ b/releases/latest/full/Dockerfile.ubi10-micro.openjdk17 @@ -0,0 +1,52 @@ +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:kernel-slim-java17-openj9-ubi-micro + +# ubi-micro has no package manager; install unzip from ubi-minimal and copy it in +FROM registry.access.redhat.com/ubi10/ubi-minimal AS builder +RUN microdnf -y install unzip && microdnf clean all + +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG LIBERTY_VERSION=26.0.0.9 +ARG FEATURES_SHA=971f2f2434b57f39c8329ffc075ed26ba5e23742 + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# We need unzip when using a local repo; copy it from ubi-minimal builder stage +USER root +COPY --from=builder /usr/bin/unzip /usr/bin/unzip +USER 1001 + +# Install all features +RUN set -eux; \ + if [ ! -f /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip ]; then \ + wget -q https://repo1.maven.org/maven2/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json -O /tmp/features-$LIBERTY_VERSION.json; \ + echo "$FEATURES_SHA /tmp/features-$LIBERTY_VERSION.json" > /tmp/features-$LIBERTY_VERSION.json.sha1; \ + sha1sum -c /tmp/features-$LIBERTY_VERSION.json.sha1; \ + else \ + echo "$FEATURES_SHA /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip" > /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + sha1sum -c /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + mkdir /tmp/feature-repo-$LIBERTY_VERSION; \ + unzip -d /tmp/feature-repo-$LIBERTY_VERSION /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip; \ + cp /tmp/feature-repo-$LIBERTY_VERSION/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json /tmp; \ + export FEATURE_LOCAL_REPO=/tmp/feature-repo-$LIBERTY_VERSION; \ + export FEATURE_VERIFY=skip; \ + fi; \ + grep \"shortName\" /tmp/features-$LIBERTY_VERSION.json | sed -e 's/.* //' -e 's/,//' | xargs featureUtility installFeature --acceptLicense --noCache; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:kernel-slim-java17-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp + +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && find /opt/ol/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/releases/latest/full/Dockerfile.ubi10-micro.openjdk21 b/releases/latest/full/Dockerfile.ubi10-micro.openjdk21 new file mode 100644 index 000000000..3e4945da5 --- /dev/null +++ b/releases/latest/full/Dockerfile.ubi10-micro.openjdk21 @@ -0,0 +1,52 @@ +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:kernel-slim-java21-openj9-ubi-micro + +# ubi-micro has no package manager; install unzip from ubi-minimal and copy it in +FROM registry.access.redhat.com/ubi10/ubi-minimal AS builder +RUN microdnf -y install unzip && microdnf clean all + +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG LIBERTY_VERSION=26.0.0.9 +ARG FEATURES_SHA=971f2f2434b57f39c8329ffc075ed26ba5e23742 + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# We need unzip when using a local repo; copy it from ubi-minimal builder stage +USER root +COPY --from=builder /usr/bin/unzip /usr/bin/unzip +USER 1001 + +# Install all features +RUN set -eux; \ + if [ ! -f /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip ]; then \ + wget -q https://repo1.maven.org/maven2/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json -O /tmp/features-$LIBERTY_VERSION.json; \ + echo "$FEATURES_SHA /tmp/features-$LIBERTY_VERSION.json" > /tmp/features-$LIBERTY_VERSION.json.sha1; \ + sha1sum -c /tmp/features-$LIBERTY_VERSION.json.sha1; \ + else \ + echo "$FEATURES_SHA /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip" > /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + sha1sum -c /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + mkdir /tmp/feature-repo-$LIBERTY_VERSION; \ + unzip -d /tmp/feature-repo-$LIBERTY_VERSION /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip; \ + cp /tmp/feature-repo-$LIBERTY_VERSION/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json /tmp; \ + export FEATURE_LOCAL_REPO=/tmp/feature-repo-$LIBERTY_VERSION; \ + export FEATURE_VERIFY=skip; \ + fi; \ + grep \"shortName\" /tmp/features-$LIBERTY_VERSION.json | sed -e 's/.* //' -e 's/,//' | xargs featureUtility installFeature --acceptLicense --noCache; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:kernel-slim-java21-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp + +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && find /opt/ol/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/releases/latest/full/Dockerfile.ubi10-micro.openjdk25 b/releases/latest/full/Dockerfile.ubi10-micro.openjdk25 new file mode 100644 index 000000000..b65326dfe --- /dev/null +++ b/releases/latest/full/Dockerfile.ubi10-micro.openjdk25 @@ -0,0 +1,52 @@ +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:kernel-slim-java25-openj9-ubi-micro + +# ubi-micro has no package manager; install unzip from ubi-minimal and copy it in +FROM registry.access.redhat.com/ubi10/ubi-minimal AS builder +RUN microdnf -y install unzip && microdnf clean all + +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG LIBERTY_VERSION=26.0.0.9 +ARG FEATURES_SHA=971f2f2434b57f39c8329ffc075ed26ba5e23742 + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# We need unzip when using a local repo; copy it from ubi-minimal builder stage +USER root +COPY --from=builder /usr/bin/unzip /usr/bin/unzip +USER 1001 + +# Install all features +RUN set -eux; \ + if [ ! -f /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip ]; then \ + wget -q https://repo1.maven.org/maven2/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json -O /tmp/features-$LIBERTY_VERSION.json; \ + echo "$FEATURES_SHA /tmp/features-$LIBERTY_VERSION.json" > /tmp/features-$LIBERTY_VERSION.json.sha1; \ + sha1sum -c /tmp/features-$LIBERTY_VERSION.json.sha1; \ + else \ + echo "$FEATURES_SHA /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip" > /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + sha1sum -c /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + mkdir /tmp/feature-repo-$LIBERTY_VERSION; \ + unzip -d /tmp/feature-repo-$LIBERTY_VERSION /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip; \ + cp /tmp/feature-repo-$LIBERTY_VERSION/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json /tmp; \ + export FEATURE_LOCAL_REPO=/tmp/feature-repo-$LIBERTY_VERSION; \ + export FEATURE_VERIFY=skip; \ + fi; \ + grep \"shortName\" /tmp/features-$LIBERTY_VERSION.json | sed -e 's/.* //' -e 's/,//' | xargs featureUtility installFeature --acceptLicense --noCache; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:kernel-slim-java25-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp + +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && find /opt/ol/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/releases/latest/full/Dockerfile.ubi10-micro.openjdk8 b/releases/latest/full/Dockerfile.ubi10-micro.openjdk8 new file mode 100644 index 000000000..4c6a9df22 --- /dev/null +++ b/releases/latest/full/Dockerfile.ubi10-micro.openjdk8 @@ -0,0 +1,52 @@ +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:kernel-slim-java8-openj9-ubi-micro + +# ubi-micro has no package manager; install unzip from ubi-minimal and copy it in +FROM registry.access.redhat.com/ubi10/ubi-minimal AS builder +RUN microdnf -y install unzip && microdnf clean all + +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG LIBERTY_VERSION=26.0.0.9 +ARG FEATURES_SHA=971f2f2434b57f39c8329ffc075ed26ba5e23742 + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# We need unzip when using a local repo; copy it from ubi-minimal builder stage +USER root +COPY --from=builder /usr/bin/unzip /usr/bin/unzip +USER 1001 + +# Install all features +RUN set -eux; \ + if [ ! -f /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip ]; then \ + wget -q https://repo1.maven.org/maven2/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json -O /tmp/features-$LIBERTY_VERSION.json; \ + echo "$FEATURES_SHA /tmp/features-$LIBERTY_VERSION.json" > /tmp/features-$LIBERTY_VERSION.json.sha1; \ + sha1sum -c /tmp/features-$LIBERTY_VERSION.json.sha1; \ + else \ + echo "$FEATURES_SHA /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip" > /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + sha1sum -c /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip.sha1; \ + mkdir /tmp/feature-repo-$LIBERTY_VERSION; \ + unzip -d /tmp/feature-repo-$LIBERTY_VERSION /tmp/openliberty-MavenArtifact-$LIBERTY_VERSION.zip; \ + cp /tmp/feature-repo-$LIBERTY_VERSION/io/openliberty/features/features/$LIBERTY_VERSION/features-$LIBERTY_VERSION.json /tmp; \ + export FEATURE_LOCAL_REPO=/tmp/feature-repo-$LIBERTY_VERSION; \ + export FEATURE_VERIFY=skip; \ + fi; \ + grep \"shortName\" /tmp/features-$LIBERTY_VERSION.json | sed -e 's/.* //' -e 's/,//' | xargs featureUtility installFeature --acceptLicense --noCache; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ol/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/open-liberty:kernel-slim-java8-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp + +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache \ + && find /opt/ol/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/releases/latest/full/Dockerfile.ubi10-minimal.ibmjava8 b/releases/latest/full/Dockerfile.ubi10-minimal.ibmjava8 index 4ec65dfd4..bfc8c0d3a 100644 --- a/releases/latest/full/Dockerfile.ubi10-minimal.ibmjava8 +++ b/releases/latest/full/Dockerfile.ubi10-minimal.ibmjava8 @@ -40,7 +40,7 @@ ARG VERBOSE=false # Copy the runtime COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp -COPY --chown=1001:0 server.xml /config/ +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml # Create a new SCC layer RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ diff --git a/releases/latest/full/Dockerfile.ubi10-minimal.openjdk11 b/releases/latest/full/Dockerfile.ubi10-minimal.openjdk11 index 08ec0b9d8..d36f1d3e3 100644 --- a/releases/latest/full/Dockerfile.ubi10-minimal.openjdk11 +++ b/releases/latest/full/Dockerfile.ubi10-minimal.openjdk11 @@ -40,7 +40,7 @@ ARG VERBOSE=false # Copy the runtime COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp -COPY --chown=1001:0 server.xml /config/ +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml # Create a new SCC layer RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ diff --git a/releases/latest/full/Dockerfile.ubi10-minimal.openjdk17 b/releases/latest/full/Dockerfile.ubi10-minimal.openjdk17 index b380e6af4..bedcb7ec5 100644 --- a/releases/latest/full/Dockerfile.ubi10-minimal.openjdk17 +++ b/releases/latest/full/Dockerfile.ubi10-minimal.openjdk17 @@ -40,7 +40,7 @@ ARG VERBOSE=false # Copy the runtime COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp -COPY --chown=1001:0 server.xml /config/ +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml # Create a new SCC layer RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ diff --git a/releases/latest/full/Dockerfile.ubi10-minimal.openjdk21 b/releases/latest/full/Dockerfile.ubi10-minimal.openjdk21 index e544946c6..0915cc9db 100644 --- a/releases/latest/full/Dockerfile.ubi10-minimal.openjdk21 +++ b/releases/latest/full/Dockerfile.ubi10-minimal.openjdk21 @@ -40,7 +40,7 @@ ARG VERBOSE=false # Copy the runtime COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp -COPY --chown=1001:0 server.xml /config/ +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml # Create a new SCC layer RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ diff --git a/releases/latest/full/Dockerfile.ubi10-minimal.openjdk25 b/releases/latest/full/Dockerfile.ubi10-minimal.openjdk25 index e60928c13..1b2da468d 100644 --- a/releases/latest/full/Dockerfile.ubi10-minimal.openjdk25 +++ b/releases/latest/full/Dockerfile.ubi10-minimal.openjdk25 @@ -40,7 +40,7 @@ ARG VERBOSE=false # Copy the runtime COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp -COPY --chown=1001:0 server.xml /config/ +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml # Create a new SCC layer RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ diff --git a/releases/latest/full/Dockerfile.ubi10-minimal.openjdk8 b/releases/latest/full/Dockerfile.ubi10-minimal.openjdk8 index 337b806fc..23fa44ce8 100644 --- a/releases/latest/full/Dockerfile.ubi10-minimal.openjdk8 +++ b/releases/latest/full/Dockerfile.ubi10-minimal.openjdk8 @@ -40,7 +40,7 @@ ARG VERBOSE=false # Copy the runtime COPY --from=installBundle --chown=1001:0 /opt/ol/wlp /opt/ol/wlp -COPY --chown=1001:0 server.xml /config/ +COPY --chown=1001:0 server-http-port-enabled.xml /config/server.xml # Create a new SCC layer RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ diff --git a/releases/latest/full/Dockerfile.ubuntu.openjdk11 b/releases/latest/full/Dockerfile.ubuntu.openjdk11 index 49e7a100e..360d53791 100644 --- a/releases/latest/full/Dockerfile.ubuntu.openjdk11 +++ b/releases/latest/full/Dockerfile.ubuntu.openjdk11 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/latest/full/Dockerfile.ubuntu.openjdk17 b/releases/latest/full/Dockerfile.ubuntu.openjdk17 index 41656199f..b4b35af47 100644 --- a/releases/latest/full/Dockerfile.ubuntu.openjdk17 +++ b/releases/latest/full/Dockerfile.ubuntu.openjdk17 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/latest/full/Dockerfile.ubuntu.openjdk8 b/releases/latest/full/Dockerfile.ubuntu.openjdk8 index 09250eec7..476d68ad0 100644 --- a/releases/latest/full/Dockerfile.ubuntu.openjdk8 +++ b/releases/latest/full/Dockerfile.ubuntu.openjdk8 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create --template=javaee8 \ diff --git a/releases/latest/full/helpers/build/populate_scc.sh b/releases/latest/full/helpers/build/populate_scc.sh index 1012a07ac..01e122d9d 100755 --- a/releases/latest/full/helpers/build/populate_scc.sh +++ b/releases/latest/full/helpers/build/populate_scc.sh @@ -1,15 +1,28 @@ #!/bin/bash . /opt/ol/helpers/build/internal/logger.sh +# Use curl/wget to warm endpoints +if command -v curl > /dev/null 2>&1; then + http_get() { curl --silent --output /dev/null --show-error --fail --max-time 5 --insecure "$1"; } +else + http_get() { wget -q --no-check-certificate -O /dev/null -T 5 "$1"; } +fi + set -Eeo pipefail SCC_SIZE="80m" # Default size of the SCC layer. ITERATIONS=2 # Number of iterations to run to populate it. TRIM_SCC=yes # Trim the SCC to eliminate any wasted space. WARM_ENDPOINT=true -WARM_ENDPOINT_URL=localhost:9080/ WARM_OPENAPI_ENDPOINT=true -WARM_OPENAPI_ENDPOINT_URL=localhost:9080/openapi + +# Default warm URLs based on ENABLE_HTTP_PORT, with HTTP_PORT/HTTPS_PORT overrides. +if [ "$ENABLE_HTTP_PORT" == "true" ]; then + WARM_ENDPOINT_URL="http://localhost:${HTTP_PORT:-9080}/" +else + WARM_ENDPOINT_URL="https://localhost:${HTTPS_PORT:-9443}/" +fi +WARM_OPENAPI_ENDPOINT_URL="${WARM_ENDPOINT_URL}openapi" # If this directory exists and has at least ug=rwx permissions, assume the base image includes an SCC called 'openj9_system_scc' and build on it. # If not, build on our own SCC. @@ -81,10 +94,10 @@ do -s Size of the SCC in megabytes (m suffix required). (Default: $SCC_SIZE) -t Trim the SCC to eliminate most of the free space, if any. -d Don't trim the SCC. - -w Use curl to warm an endpoint during SCC creation. (Default: $WARM_ENDPOINT) + -w Use curl/wget to warm an endpoint during SCC creation. (Default: $WARM_ENDPOINT) -c Do not warm an endpoint during SCC creation. -u The URL endpoint to warm during SCC creation. (Default: $WARM_ENDPOINT_URL) - -m Use curl to warm the openapi endpoint during SCC creation. (Default: $WARM_OPENAPI_ENDPOINT) + -m Use curl/wget to warm the openapi endpoint during SCC creation. (Default: $WARM_OPENAPI_ENDPOINT) -l Do not warm the openapi endpoint during SCC creation. -o The Open API URL endpoint to warm during SCC creation. (Default: $WARM_ENDPOINT_OPENAPI_URL) @@ -117,11 +130,11 @@ then if [ ${WARM_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" fi if [ ${WARM_OPENAPI_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" fi /opt/ol/wlp/bin/server stop @@ -152,11 +165,11 @@ do if [ ${WARM_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" fi if [ ${WARM_OPENAPI_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" fi /opt/ol/wlp/bin/server stop diff --git a/releases/latest/full/server-http-port-enabled.xml b/releases/latest/full/server-http-port-enabled.xml new file mode 100644 index 000000000..120800ea8 --- /dev/null +++ b/releases/latest/full/server-http-port-enabled.xml @@ -0,0 +1,37 @@ + + + + + + javaee-8.0 + + + + + + + + + + + + + + + + + + + + + + diff --git a/releases/latest/full/server.xml b/releases/latest/full/server.xml index 120800ea8..8b57a2bd9 100644 --- a/releases/latest/full/server.xml +++ b/releases/latest/full/server.xml @@ -25,7 +25,7 @@ diff --git a/releases/latest/kernel-slim/Dockerfile.ubi.ibmjava8 b/releases/latest/kernel-slim/Dockerfile.ubi.ibmjava8 index 758d21c1c..03adfa8b0 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubi.ibmjava8 +++ b/releases/latest/kernel-slim/Dockerfile.ubi.ibmjava8 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/Dockerfile.ubi.openjdk11 b/releases/latest/kernel-slim/Dockerfile.ubi.openjdk11 index d7edac51e..7705049e5 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubi.openjdk11 +++ b/releases/latest/kernel-slim/Dockerfile.ubi.openjdk11 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/Dockerfile.ubi.openjdk17 b/releases/latest/kernel-slim/Dockerfile.ubi.openjdk17 index 5288e978b..b57572846 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubi.openjdk17 +++ b/releases/latest/kernel-slim/Dockerfile.ubi.openjdk17 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/Dockerfile.ubi.openjdk8 b/releases/latest/kernel-slim/Dockerfile.ubi.openjdk8 index 4d5e8cd3e..171cfd6de 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubi.openjdk8 +++ b/releases/latest/kernel-slim/Dockerfile.ubi.openjdk8 @@ -99,7 +99,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/Dockerfile.ubi10-micro.ibmjava8 b/releases/latest/kernel-slim/Dockerfile.ubi10-micro.ibmjava8 new file mode 100644 index 000000000..930df335d --- /dev/null +++ b/releases/latest/kernel-slim/Dockerfile.ubi10-micro.ibmjava8 @@ -0,0 +1,177 @@ +# This relies on a base image which needs to be built seperately +# curl https://raw.githubusercontent.com/ibmruntimes/ci.docker/main/ibmjava/8/jre/ubi-min/Dockerfile -o java/Dockerfile.ubi10.minimal +# The above file needs editing before it is built: +# This changes to a UBI10 base, and corrects the microdnf command to work on UBI10. +# $> sed -i -e 's/ubi8/ubi10/' -e 's/microdnf install/microdnf -y install/' -e 's/microdnf update/microdnf update -y/' Dockerfile.ubi10-minimal.ibmjava8 +# $> rm ./java/Dockerfile.ubi10.minimal.bak +# Then build and tag as 'ibmjava:10-ubi' +# $> docker build -t ibmjava:10-ubi -f ./java/Dockerfile.ubi10.minimal java + +FROM ibmjava:10-ubi AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_SHA=4ec644ee059a8d54a26c326763fd404a6baf1570 +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-kernel/$LIBERTY_VERSION/openliberty-kernel-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ +# && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibmjava:8-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty with IBM's Java and UBI 10 micro" \ + description="This image contains the Open Liberty runtime with IBM's Java and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libreadline.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libgnutls.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libidn2.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libunistring.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libuuid.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + IBM_JAVA_OPTIONS="-Xshareclasses:name=liberty,readonly,nonfatal,cacheDir=/output/.classCache/ -Dosgi.checkConfiguration=false ${IBM_JAVA_OPTIONS}" + +USER 1001 + +EXPOSE 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] + diff --git a/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk11 b/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk11 new file mode 100755 index 000000000..71bdb7c03 --- /dev/null +++ b/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk11 @@ -0,0 +1,164 @@ +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_SHA=4ec644ee059a8d54a26c326763fd404a6baf1570 +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-kernel/$LIBERTY_VERSION/openliberty-kernel-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ + && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibm-semeru-runtimes:open-11-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty with IBM Semeru Runtime Open Edition OpenJDK 11 with OpenJ9 and UBI 10 micro" \ + description="This image contains the Open Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK 11 with OpenJ9 and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && if [ -e /etc/instanton.ld.so.cache ]; then chmod g+w /etc/ld.so.cache; fi \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + OPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal -Dosgi.checkConfiguration=false" + +USER 1001 + +EXPOSE 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] + diff --git a/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk17 b/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk17 new file mode 100755 index 000000000..bcba29407 --- /dev/null +++ b/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk17 @@ -0,0 +1,164 @@ +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_SHA=4ec644ee059a8d54a26c326763fd404a6baf1570 +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-kernel/$LIBERTY_VERSION/openliberty-kernel-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ + && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibm-semeru-runtimes:open-17-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty with IBM Semeru Runtime Open Edition OpenJDK 17 with OpenJ9 and UBI 10 micro" \ + description="This image contains the Open Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK 17 with OpenJ9 and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && if [ -e /etc/instanton.ld.so.cache ]; then chmod g+w /etc/ld.so.cache; fi \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + OPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal -Dosgi.checkConfiguration=false" + +USER 1001 + +EXPOSE 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] + diff --git a/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk21 b/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk21 new file mode 100755 index 000000000..efb56b825 --- /dev/null +++ b/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk21 @@ -0,0 +1,164 @@ +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_SHA=4ec644ee059a8d54a26c326763fd404a6baf1570 +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-kernel/$LIBERTY_VERSION/openliberty-kernel-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ + && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibm-semeru-runtimes:open-21-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty with IBM Semeru Runtime Open Edition OpenJDK 21 with OpenJ9 and UBI 10 micro" \ + description="This image contains the Open Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK 21 with OpenJ9 and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && if [ -e /etc/instanton.ld.so.cache ]; then chmod g+w /etc/ld.so.cache; fi \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + OPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal -Dosgi.checkConfiguration=false" + +USER 1001 + +EXPOSE 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] + diff --git a/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk25 b/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk25 new file mode 100755 index 000000000..3ceeebcd0 --- /dev/null +++ b/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk25 @@ -0,0 +1,164 @@ +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_SHA=4ec644ee059a8d54a26c326763fd404a6baf1570 +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-kernel/$LIBERTY_VERSION/openliberty-kernel-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ + && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibm-semeru-runtimes:open-25-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty with IBM Semeru Runtime Open Edition OpenJDK 25 with OpenJ9 and UBI 10 micro" \ + description="This image contains the Open Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK 25 with OpenJ9 and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && if [ -e /etc/instanton.ld.so.cache ]; then chmod g+w /etc/ld.so.cache; fi \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + OPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal -Dosgi.checkConfiguration=false" + +USER 1001 + +EXPOSE 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] + diff --git a/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk8 b/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk8 new file mode 100755 index 000000000..f22121216 --- /dev/null +++ b/releases/latest/kernel-slim/Dockerfile.ubi10-micro.openjdk8 @@ -0,0 +1,164 @@ +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_SHA=4ec644ee059a8d54a26c326763fd404a6baf1570 +ARG LIBERTY_DOWNLOAD_URL=https://repo1.maven.org/maven2/io/openliberty/openliberty-kernel/$LIBERTY_VERSION/openliberty-kernel-$LIBERTY_VERSION.zip + +ARG VERBOSE=false + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +# Install Open Liberty +RUN microdnf -y install shadow-utils wget unzip openssl \ + && if [ ! -f /tmp/wlp.zip ]; then wget -q $LIBERTY_DOWNLOAD_URL -U UA-Open-Liberty-Docker -O /tmp/wlp.zip; fi \ + && echo "$LIBERTY_SHA /tmp/wlp.zip" > /tmp/wlp.zip.sha1 \ + && sha1sum -c /tmp/wlp.zip.sha1 \ + && chmod -R u+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ol \ + && mkdir -p /licenses \ + && cp /opt/ol/wlp/LICENSE /licenses/ \ + && adduser -u 1001 -r -g root -s /usr/sbin/nologin default \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +# Install dumb-init +RUN set -eux; \ + ARCH="$(uname -m)"; \ + case "${ARCH}" in \ + aarch64|arm64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_aarch64'; \ + DUMB_INIT_SHA256=b7d648f97154a99c539b63c55979cd29f005f88430fb383007fe3458340b795e; \ + ;; \ + amd64|x86_64) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_x86_64'; \ + DUMB_INIT_SHA256=e874b55f3279ca41415d290c512a7ba9d08f98041b28ae7c2acb19a545f1c4df; \ + ;; \ + ppc64el|ppc64le) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_ppc64le'; \ + DUMB_INIT_SHA256=3d15e80e29f0f4fa1fc686b00613a2220bc37e83a35283d4b4cca1fbd0a5609f; \ + ;; \ + s390x) \ + DUMB_INIT_URL='https://github.com/Yelp/dumb-init/releases/download/v1.2.5/dumb-init_1.2.5_s390x'; \ + DUMB_INIT_SHA256=47e4601b152fc6dcb1891e66c30ecc62a2939fd7ffd1515a7c30f281cfec53b7; \ + ;;\ + *) \ + echo "Unsupported arch: ${ARCH}"; \ + exit 1; \ + ;; \ + esac; \ + curl -LfsSo /usr/bin/dumb-init ${DUMB_INIT_URL}; \ + echo "${DUMB_INIT_SHA256} */usr/bin/dumb-init" | sha256sum -c -; \ + chmod +x /usr/bin/dumb-init; + +FROM icr.io/appcafe/ibm-semeru-runtimes:open-8-jre-ubi10-micro + +USER root + +ARG LIBERTY_VERSION=26.0.0.9 +ARG LIBERTY_BUILD_LABEL=cl260920260824-0859 + +ARG OPENJ9_SCC=true +ARG VERBOSE=false + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="Open Liberty" \ + org.opencontainers.image.url="https://openliberty.io/" \ + org.opencontainers.image.source="https://github.com/OpenLiberty/ci.docker" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + liberty.version="$LIBERTY_VERSION" \ + io.openliberty.version="$LIBERTY_VERSION" \ + vendor="Open Liberty" \ + name="Open Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for Open Liberty with IBM Semeru Runtime Open Edition OpenJDK 8 with OpenJ9 and UBI 10 micro" \ + description="This image contains the Open Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK 8 with OpenJ9 and Red Hat UBI 10 micro as the base OS. For more information on this image please see https://github.com/OpenLiberty/ci.docker#building-an-application-image" + +COPY NOTICES /opt/ol/NOTICES +COPY helpers /opt/ol/helpers +COPY fixes/ /opt/ol/fixes/ + +# Add default user 1001 and create wlp with right user/permissions before copying +RUN echo "1001:x:1001:0::/home/1001:/sbin/nologin" >> /etc/passwd \ + && mkdir -p /home/1001 \ + && chown 1001:0 /home/1001 \ + && mkdir -p /opt/ol/wlp \ + && chown -R 1001:0 /opt/ol/wlp \ + && chmod -R g+rw /opt/ol/wlp + +COPY --from=builder /usr/bin/dumb-init /usr/bin/dumb-init +COPY --from=builder /usr/bin/awk /usr/bin/awk +COPY --from=builder /usr/bin/wget /usr/bin/wget + +COPY --from=builder /usr/lib64/libpsl.so* /usr/lib64/ +COPY --from=builder /usr/lib64/libmpfr.so* /usr/lib64/ + +# Copy the runtime and licenses +COPY --from=builder --chown=1001:0 /opt/ol/wlp /opt/ol/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ + LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ol/wlp/output \ + WLP_SKIP_MAXPERMSIZE=true \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure Open Liberty +RUN /opt/ol/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ol/wlp/usr/servers/defaultServer/server.env + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir -p /opt/ol/wlp/usr/shared/resources/lib.index.cache \ + && ln -s /opt/ol/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p $WLP_OUTPUT_DIR/defaultServer \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ol/wlp/usr/servers/defaultServer /config \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && ln -s /opt/ol/wlp /liberty \ + && ln -s /opt/ol/fixes /fixes \ + && echo "" > /config/configDropins/defaults/open-default-port.xml \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ol/wlp/usr \ + && chmod -R g+rw /opt/ol/wlp/usr \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rw /opt/ol/wlp/output \ + && chown -R 1001:0 /opt/ol/helpers \ + && chmod -R ug+rwx /opt/ol/helpers \ + && chown -R 1001:0 /opt/ol/fixes \ + && chmod -R g+rwx /opt/ol/fixes \ + && mkdir /etc/wlp \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && if [ -e /etc/instanton.ld.so.cache ]; then chmod g+w /etc/ld.so.cache; fi \ + && ln -s /logs /liberty/logs \ + && mkdir /serviceability \ + && chown -R 1001:0 /serviceability \ + && chmod -R g+rw /serviceability + +# Create a new SCC layer +RUN if [ "$OPENJ9_SCC" = "true" ]; then populate_scc.sh; fi \ + && rm -rf /output/messaging /output/resources/security /logs/* $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && chown -R 1001:0 /opt/ol/wlp/output \ + && chmod -R g+rwx /opt/ol/wlp/output + +#These settings are needed so that we can run as a different user than 1001 after server warmup +ENV RANDFILE=/tmp/.rnd \ + OPENJ9_JAVA_OPTIONS="-XX:+IgnoreUnrecognizedVMOptions -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal -Dosgi.checkConfiguration=false" + +USER 1001 + +EXPOSE 9443 + +ENTRYPOINT ["/opt/ol/helpers/runtime/docker-server.sh"] +CMD ["/opt/ol/wlp/bin/server", "run", "defaultServer"] + diff --git a/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.ibmjava8 b/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.ibmjava8 index ba9301d09..d626bf031 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.ibmjava8 +++ b/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.ibmjava8 @@ -109,7 +109,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk11 b/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk11 index 7c010a0f7..63f61c2e5 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk11 +++ b/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk11 @@ -100,7 +100,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk17 b/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk17 index af653730a..8f162f27b 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk17 +++ b/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk17 @@ -100,7 +100,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk21 b/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk21 index 8ca52bfe2..689c8ecf8 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk21 +++ b/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk21 @@ -100,7 +100,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk25 b/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk25 index 096bab682..4aee76853 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk25 +++ b/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk25 @@ -100,7 +100,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk8 b/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk8 index e46ed4ead..5449ac26f 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk8 +++ b/releases/latest/kernel-slim/Dockerfile.ubi10-minimal.openjdk8 @@ -100,7 +100,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk11 b/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk11 index b07c296ff..3556b7f26 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk11 +++ b/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk11 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk17 b/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk17 index 80415b3f3..ea56a05ef 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk17 +++ b/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk17 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk8 b/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk8 index d4971090e..e9c578484 100644 --- a/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk8 +++ b/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk8 @@ -77,7 +77,8 @@ ENV PATH=$PATH:/opt/ol/wlp/bin:/opt/ol/helpers/build:/opt/ol/helpers/runtime \ LOG_DIR=/liberty/logs \ WLP_OUTPUT_DIR=/opt/ol/wlp/output \ WLP_SKIP_MAXPERMSIZE=true \ - OPENJ9_SCC=$OPENJ9_SCC + OPENJ9_SCC=$OPENJ9_SCC \ + ENABLE_HTTP_PORT=true # Configure Open Liberty RUN /opt/ol/wlp/bin/server create \ diff --git a/releases/latest/kernel-slim/helpers/build/configuration_snippets/http-port-disabled.xml b/releases/latest/kernel-slim/helpers/build/configuration_snippets/http-port-disabled.xml new file mode 100644 index 000000000..4abd49cd7 --- /dev/null +++ b/releases/latest/kernel-slim/helpers/build/configuration_snippets/http-port-disabled.xml @@ -0,0 +1,4 @@ + + + + diff --git a/releases/latest/kernel-slim/helpers/build/configuration_snippets/update-trigger-disabled.xml b/releases/latest/kernel-slim/helpers/build/configuration_snippets/update-trigger-disabled.xml new file mode 100644 index 000000000..b97391b58 --- /dev/null +++ b/releases/latest/kernel-slim/helpers/build/configuration_snippets/update-trigger-disabled.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/releases/latest/kernel-slim/helpers/build/configure.sh b/releases/latest/kernel-slim/helpers/build/configure.sh index 5341dde16..75a8bbb3f 100755 --- a/releases/latest/kernel-slim/helpers/build/configure.sh +++ b/releases/latest/kernel-slim/helpers/build/configure.sh @@ -18,6 +18,17 @@ function main() { #Check for each Liberty value-add functionality + # Disable automatic configuration file monitoring (security hardening). + if [ "$SKIP_UPDATE_TRIGGER_DISABLED" != "true" ]; then + cp $SNIPPETS_SOURCE/update-trigger-disabled.xml $SNIPPETS_TARGET_DEFAULTS/update-trigger-disabled.xml + chmod g+rw $SNIPPETS_TARGET_DEFAULTS/update-trigger-disabled.xml + fi + + # HTTP port is disabled by default. Set ENABLE_HTTP_PORT=true to re-enable port 9080. + if [ "$ENABLE_HTTP_PORT" != "true" ]; then + cp $SNIPPETS_SOURCE/http-port-disabled.xml $SNIPPETS_TARGET_DEFAULTS/http-port-disabled.xml + fi + # Infinispan Session Caching if [[ -n "$INFINISPAN_SERVICE_NAME" ]]; then cp ${SNIPPETS_SOURCE}/infinispan-client-sessioncache.xml ${SNIPPETS_TARGET}/infinispan-client-sessioncache.xml diff --git a/releases/latest/kernel-slim/helpers/build/features.sh b/releases/latest/kernel-slim/helpers/build/features.sh index 5b4800ebc..7595603ec 100755 --- a/releases/latest/kernel-slim/helpers/build/features.sh +++ b/releases/latest/kernel-slim/helpers/build/features.sh @@ -26,8 +26,14 @@ fi if [ "$SSL" == "true" ] || [ "$TLS" == "true" ]; then cp $SNIPPETS_SOURCE/tls.xml $SNIPPETS_TARGET/tls.xml fi - # Install necessary features using featureUtility featureUtility installServerFeatures --acceptLicense defaultServer --noCache find /opt/ol/wlp/lib /opt/ol/wlp/bin ! -perm -g=rw -print0 | xargs -0 -r chmod g+rw +# Validate the Liberty installation integrity after feature installation +if [ "$SKIP_FEATURE_VALIDATE" != "true" ]; then + /opt/ol/wlp/bin/productInfo validate +fi + +echo "features.sh script has been run" > /logs/features.log + diff --git a/releases/latest/kernel-slim/helpers/build/populate_scc.sh b/releases/latest/kernel-slim/helpers/build/populate_scc.sh index 1012a07ac..01e122d9d 100755 --- a/releases/latest/kernel-slim/helpers/build/populate_scc.sh +++ b/releases/latest/kernel-slim/helpers/build/populate_scc.sh @@ -1,15 +1,28 @@ #!/bin/bash . /opt/ol/helpers/build/internal/logger.sh +# Use curl/wget to warm endpoints +if command -v curl > /dev/null 2>&1; then + http_get() { curl --silent --output /dev/null --show-error --fail --max-time 5 --insecure "$1"; } +else + http_get() { wget -q --no-check-certificate -O /dev/null -T 5 "$1"; } +fi + set -Eeo pipefail SCC_SIZE="80m" # Default size of the SCC layer. ITERATIONS=2 # Number of iterations to run to populate it. TRIM_SCC=yes # Trim the SCC to eliminate any wasted space. WARM_ENDPOINT=true -WARM_ENDPOINT_URL=localhost:9080/ WARM_OPENAPI_ENDPOINT=true -WARM_OPENAPI_ENDPOINT_URL=localhost:9080/openapi + +# Default warm URLs based on ENABLE_HTTP_PORT, with HTTP_PORT/HTTPS_PORT overrides. +if [ "$ENABLE_HTTP_PORT" == "true" ]; then + WARM_ENDPOINT_URL="http://localhost:${HTTP_PORT:-9080}/" +else + WARM_ENDPOINT_URL="https://localhost:${HTTPS_PORT:-9443}/" +fi +WARM_OPENAPI_ENDPOINT_URL="${WARM_ENDPOINT_URL}openapi" # If this directory exists and has at least ug=rwx permissions, assume the base image includes an SCC called 'openj9_system_scc' and build on it. # If not, build on our own SCC. @@ -81,10 +94,10 @@ do -s Size of the SCC in megabytes (m suffix required). (Default: $SCC_SIZE) -t Trim the SCC to eliminate most of the free space, if any. -d Don't trim the SCC. - -w Use curl to warm an endpoint during SCC creation. (Default: $WARM_ENDPOINT) + -w Use curl/wget to warm an endpoint during SCC creation. (Default: $WARM_ENDPOINT) -c Do not warm an endpoint during SCC creation. -u The URL endpoint to warm during SCC creation. (Default: $WARM_ENDPOINT_URL) - -m Use curl to warm the openapi endpoint during SCC creation. (Default: $WARM_OPENAPI_ENDPOINT) + -m Use curl/wget to warm the openapi endpoint during SCC creation. (Default: $WARM_OPENAPI_ENDPOINT) -l Do not warm the openapi endpoint during SCC creation. -o The Open API URL endpoint to warm during SCC creation. (Default: $WARM_ENDPOINT_OPENAPI_URL) @@ -117,11 +130,11 @@ then if [ ${WARM_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" fi if [ ${WARM_OPENAPI_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" fi /opt/ol/wlp/bin/server stop @@ -152,11 +165,11 @@ do if [ ${WARM_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_ENDPOINT_URL} 2>&1 || echo "${WARM_ENDPOINT_URL} call failed, continuing" fi if [ ${WARM_OPENAPI_ENDPOINT} == true ] then - curl --silent --output /dev/null --show-error --fail --max-time 5 ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" + http_get ${WARM_OPENAPI_ENDPOINT_URL} 2>&1 || echo "${WARM_OPENAPI_ENDPOINT_URL} call failed, continuing" fi /opt/ol/wlp/bin/server stop