diff --git a/.secrets.baseline b/.secrets.baseline index 81177ac23..5383786af 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -3,7 +3,7 @@ "files": "^.secrets.baseline$", "lines": "fbf6a96d49214c0abc6a3bc5da6e48cd|REPLACE|PWD_TRUST|SECRET|keyStore|secret|rootpwd|dbpassword" }, - "generated_at": "2026-07-30T15:45:14Z", + "generated_at": "2026-08-18T14:50:50Z", "plugins_used": [ { "name": "AWSKeyDetector" @@ -915,6 +915,66 @@ "verified_result": null } ], + "ga/latest/kernel/Dockerfile.ubi10-micro.ibmjava8": [ + { + "hashed_secret": "7083d74c46835f9b94206ff41e2e54ff946d6683", + "is_secret": false, + "is_verified": false, + "line_number": 113, + "type": "Hex High Entropy String", + "verified_result": null + } + ], + "ga/latest/kernel/Dockerfile.ubi10-micro.openjdk11": [ + { + "hashed_secret": "7083d74c46835f9b94206ff41e2e54ff946d6683", + "is_secret": false, + "is_verified": false, + "line_number": 101, + "type": "Hex High Entropy String", + "verified_result": null + } + ], + "ga/latest/kernel/Dockerfile.ubi10-micro.openjdk17": [ + { + "hashed_secret": "7083d74c46835f9b94206ff41e2e54ff946d6683", + "is_secret": false, + "is_verified": false, + "line_number": 101, + "type": "Hex High Entropy String", + "verified_result": null + } + ], + "ga/latest/kernel/Dockerfile.ubi10-micro.openjdk21": [ + { + "hashed_secret": "7083d74c46835f9b94206ff41e2e54ff946d6683", + "is_secret": false, + "is_verified": false, + "line_number": 101, + "type": "Hex High Entropy String", + "verified_result": null + } + ], + "ga/latest/kernel/Dockerfile.ubi10-micro.openjdk25": [ + { + "hashed_secret": "7083d74c46835f9b94206ff41e2e54ff946d6683", + "is_secret": false, + "is_verified": false, + "line_number": 101, + "type": "Hex High Entropy String", + "verified_result": null + } + ], + "ga/latest/kernel/Dockerfile.ubi10-micro.openjdk8": [ + { + "hashed_secret": "7083d74c46835f9b94206ff41e2e54ff946d6683", + "is_secret": false, + "is_verified": false, + "line_number": 101, + "type": "Hex High Entropy String", + "verified_result": null + } + ], "ga/latest/kernel/Dockerfile.ubi10-minimal.ibmjava8": [ { "hashed_secret": "7083d74c46835f9b94206ff41e2e54ff946d6683", diff --git a/README.md b/README.md index 1009617d8..3dd9588aa 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,9 @@ FROM icr.io/appcafe/websphere-liberty:kernel-java17-openj9-ubi # Default setting for the verbose option. Set it to true to debug the application container image build failures ARG VERBOSE=false +# HTTP port (9080) is disabled by default and HTTPS (9443) remains enabled. Uncomment and set to true to re-enable plain HTTP. +#ARG ENABLE_HTTP_PORT=true + # Add Liberty server configuration including all necessary features COPY --chown=1001:0 server.xml /config/ @@ -77,6 +80,10 @@ This section describes the optional build variables that can be enabled via the * XML Snippet Location: [hazelcast-sessioncache.xml](ga/latest/kernel/helpers/build/configuration_snippets/hazelcast-sessioncache.xml) * `SKIP_FEATURE_INSTALL` * Description: Default setting is `false`. When set to `true`, Liberty features will not be installed using `installUtility` when `configure.sh` is run. This setting is not applicable when `features.sh` is run. +* `SKIP_FEATURE_VALIDATE` + * Description: Default setting is `false`. When set to `true`, `productInfo validate` will be skipped after feature installation in `features.sh`. Validation is recommended and should only be skipped when necessary. +* `SKIP_UPDATE_TRIGGER_DISABLED` + * Description: Default setting is `false`. When set to `true`, the `update-trigger-disabled.xml` snippet will not be copied into `configDropins/defaults`, re-enabling automatic configuration file monitoring. Disabling monitoring is recommended for production. * `TLS` (`SSL` is deprecated) * Description: Enable Transport Security in Liberty by adding the `transportSecurity-1.0` feature (includes support for SSL). * XML Snippet Location: [keystore.xml](ga/latest/kernel/helpers/build/configuration_snippets/keystore.xml). @@ -86,7 +93,9 @@ This section describes the optional build variables that can be enabled via the * Description: Automatically generates a secure random password for LTPA keys and exports it as the `ltpa_keys_password` environment variable. This prevents the LTPA service from failing with error `CWWKS4118E` when no LTPA keys password is configured. * Default: `"true"`. * Note: If `ltpa_keys_password` is already set, automatic generation is skipped. Set to `"false"` to disable. - +* `ENABLE_HTTP_PORT` + * Description: Controls whether the HTTP port (port 9080 by default) is enabled. By default, the HTTP port is disabled (`-1`) and HTTPS remains enabled as the expected transport. Set to `true` to re-enable the HTTP port. + * Default: `"false"`. ### Deprecated Build Variables @@ -146,13 +155,13 @@ This feature can be controlled via the following variables: * Default: `"true"`. * `WARM_ENDPOINT_URL` (enviornment variable) * Description: The URL to access during SCC population if WARM_ENDPOINT is true. - * Default: `"localhost:9080/"`. + * Default: `"https://localhost:9443/"`. * `WARM_OPENAPI_ENDPOINT` (environment variable) * Description: (24.0.0.4+) If `"true"`, curl will be used to access the WARM_OPENAPI_ENDPOINT_URL (see below) during the population of the SCC. This will increase the amount of information in the SCC and improve first request time in subsequent starts of the image. * Default: `"true"` * `WARM_OPENAPI_ENDPOINT_URL` (enviornment variable) * Description: (24.0.0.4+) The URL to access during SCC population if WARM_OPENAPI_ENDPOINT is true. - * Default: `"localhost:9080/openapi"` + * Default: `"https://localhost:9443/openapi"` ## Logging diff --git a/ga/latest/full/Dockerfile.ubi10-micro.ibmjava8 b/ga/latest/full/Dockerfile.ubi10-micro.ibmjava8 new file mode 100644 index 000000000..9a31530c1 --- /dev/null +++ b/ga/latest/full/Dockerfile.ubi10-micro.ibmjava8 @@ -0,0 +1,51 @@ +# (C) Copyright IBM Corporation 2026. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ARG PARENT_IMAGE=icr.io/appcafe/websphere-liberty:kernel-java8-ibmjava-ubi-micro +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG REPOSITORIES_PROPERTIES="" + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# Install the base bundle +RUN set -eux; \ + if [ ! -z "$REPOSITORIES_PROPERTIES" ]; then \ + mkdir /opt/ibm/wlp/etc/; \ + echo "$REPOSITORIES_PROPERTIES" > /opt/ibm/wlp/etc/repositories.properties; \ + installUtility install --acceptLicense baseBundle; \ + rm /opt/ibm/wlp/etc/repositories.properties; \ + elif [ -f /tmp/wlpRepo.zip ]; then \ + installUtility install --acceptLicense baseBundle --from=/tmp/wlpRepo.zip; \ + else \ + installUtility install --acceptLicense baseBundle; \ + fi; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ibm/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/websphere-liberty:kernel-java8-ibmjava-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ibm/wlp /opt/ibm/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/ibm/wlp/output ! -path "*.classCache*" ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/ga/latest/full/Dockerfile.ubi10-micro.openjdk11 b/ga/latest/full/Dockerfile.ubi10-micro.openjdk11 new file mode 100644 index 000000000..46b03d8a0 --- /dev/null +++ b/ga/latest/full/Dockerfile.ubi10-micro.openjdk11 @@ -0,0 +1,51 @@ +# (C) Copyright IBM Corporation 2026. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ARG PARENT_IMAGE=icr.io/appcafe/websphere-liberty:kernel-java11-openj9-ubi-micro +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG REPOSITORIES_PROPERTIES="" + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# Install the base bundle +RUN set -eux; \ + if [ ! -z "$REPOSITORIES_PROPERTIES" ]; then \ + mkdir /opt/ibm/wlp/etc/; \ + echo "$REPOSITORIES_PROPERTIES" > /opt/ibm/wlp/etc/repositories.properties; \ + installUtility install --acceptLicense baseBundle; \ + rm /opt/ibm/wlp/etc/repositories.properties; \ + elif [ -f /tmp/wlpRepo.zip ]; then \ + installUtility install --acceptLicense baseBundle --from=/tmp/wlpRepo.zip; \ + else \ + installUtility install --acceptLicense baseBundle; \ + fi; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ibm/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/websphere-liberty:kernel-java11-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ibm/wlp /opt/ibm/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/ibm/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/ga/latest/full/Dockerfile.ubi10-micro.openjdk17 b/ga/latest/full/Dockerfile.ubi10-micro.openjdk17 new file mode 100644 index 000000000..d49700c60 --- /dev/null +++ b/ga/latest/full/Dockerfile.ubi10-micro.openjdk17 @@ -0,0 +1,51 @@ +# (C) Copyright IBM Corporation 2026. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ARG PARENT_IMAGE=icr.io/appcafe/websphere-liberty:kernel-java17-openj9-ubi-micro +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG REPOSITORIES_PROPERTIES="" + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# Install the base bundle +RUN set -eux; \ + if [ ! -z "$REPOSITORIES_PROPERTIES" ]; then \ + mkdir /opt/ibm/wlp/etc/; \ + echo "$REPOSITORIES_PROPERTIES" > /opt/ibm/wlp/etc/repositories.properties; \ + installUtility install --acceptLicense baseBundle; \ + rm /opt/ibm/wlp/etc/repositories.properties; \ + elif [ -f /tmp/wlpRepo.zip ]; then \ + installUtility install --acceptLicense baseBundle --from=/tmp/wlpRepo.zip; \ + else \ + installUtility install --acceptLicense baseBundle; \ + fi; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ibm/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/websphere-liberty:kernel-java17-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ibm/wlp /opt/ibm/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/ibm/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/ga/latest/full/Dockerfile.ubi10-micro.openjdk21 b/ga/latest/full/Dockerfile.ubi10-micro.openjdk21 new file mode 100644 index 000000000..f0807eef3 --- /dev/null +++ b/ga/latest/full/Dockerfile.ubi10-micro.openjdk21 @@ -0,0 +1,51 @@ +# (C) Copyright IBM Corporation 2026. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ARG PARENT_IMAGE=icr.io/appcafe/websphere-liberty:kernel-java21-openj9-ubi-micro +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG REPOSITORIES_PROPERTIES="" + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# Install the base bundle +RUN set -eux; \ + if [ ! -z "$REPOSITORIES_PROPERTIES" ]; then \ + mkdir /opt/ibm/wlp/etc/; \ + echo "$REPOSITORIES_PROPERTIES" > /opt/ibm/wlp/etc/repositories.properties; \ + installUtility install --acceptLicense baseBundle; \ + rm /opt/ibm/wlp/etc/repositories.properties; \ + elif [ -f /tmp/wlpRepo.zip ]; then \ + installUtility install --acceptLicense baseBundle --from=/tmp/wlpRepo.zip; \ + else \ + installUtility install --acceptLicense baseBundle; \ + fi; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ibm/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/websphere-liberty:kernel-java21-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ibm/wlp /opt/ibm/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/ibm/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/ga/latest/full/Dockerfile.ubi10-micro.openjdk25 b/ga/latest/full/Dockerfile.ubi10-micro.openjdk25 new file mode 100644 index 000000000..6bf1d2d89 --- /dev/null +++ b/ga/latest/full/Dockerfile.ubi10-micro.openjdk25 @@ -0,0 +1,51 @@ +# (C) Copyright IBM Corporation 2026. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ARG PARENT_IMAGE=icr.io/appcafe/websphere-liberty:kernel-java25-openj9-ubi-micro +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG REPOSITORIES_PROPERTIES="" + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# Install the base bundle +RUN set -eux; \ + if [ ! -z "$REPOSITORIES_PROPERTIES" ]; then \ + mkdir /opt/ibm/wlp/etc/; \ + echo "$REPOSITORIES_PROPERTIES" > /opt/ibm/wlp/etc/repositories.properties; \ + installUtility install --acceptLicense baseBundle; \ + rm /opt/ibm/wlp/etc/repositories.properties; \ + elif [ -f /tmp/wlpRepo.zip ]; then \ + installUtility install --acceptLicense baseBundle --from=/tmp/wlpRepo.zip; \ + else \ + installUtility install --acceptLicense baseBundle; \ + fi; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ibm/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/websphere-liberty:kernel-java25-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ibm/wlp /opt/ibm/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/ibm/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/ga/latest/full/Dockerfile.ubi10-micro.openjdk8 b/ga/latest/full/Dockerfile.ubi10-micro.openjdk8 new file mode 100644 index 000000000..1e754f636 --- /dev/null +++ b/ga/latest/full/Dockerfile.ubi10-micro.openjdk8 @@ -0,0 +1,51 @@ +# (C) Copyright IBM Corporation 2026. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ARG PARENT_IMAGE=icr.io/appcafe/websphere-liberty:kernel-java8-openj9-ubi-micro +FROM $PARENT_IMAGE AS installBundle + +ARG VERBOSE=false +ARG REPOSITORIES_PROPERTIES="" + +# If there is a local copy of the repository use that instead +COPY resources/ /tmp/ + +# Install the base bundle +RUN set -eux; \ + if [ ! -z "$REPOSITORIES_PROPERTIES" ]; then \ + mkdir /opt/ibm/wlp/etc/; \ + echo "$REPOSITORIES_PROPERTIES" > /opt/ibm/wlp/etc/repositories.properties; \ + installUtility install --acceptLicense baseBundle; \ + rm /opt/ibm/wlp/etc/repositories.properties; \ + elif [ -f /tmp/wlpRepo.zip ]; then \ + installUtility install --acceptLicense baseBundle --from=/tmp/wlpRepo.zip; \ + else \ + installUtility install --acceptLicense baseBundle; \ + fi; \ + rm -rf /output/workarea /output/logs; \ + find /opt/ibm/wlp ! -perm -g=rw -print0 | xargs -r -0 chmod g+rw; + +ARG PARENT_IMAGE=icr.io/appcafe/websphere-liberty:kernel-java8-openj9-ubi-micro +FROM $PARENT_IMAGE +ARG VERBOSE=false + +# Copy the runtime +COPY --from=installBundle --chown=1001:0 /opt/ibm/wlp /opt/ibm/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/ibm/wlp/output ! -perm -g=rwx -print0 | xargs -0 -r chmod g+rwx diff --git a/ga/latest/kernel/Dockerfile.ubi10-micro.ibmjava8 b/ga/latest/kernel/Dockerfile.ubi10-micro.ibmjava8 new file mode 100644 index 000000000..e14db73f0 --- /dev/null +++ b/ga/latest/kernel/Dockerfile.ubi10-micro.ibmjava8 @@ -0,0 +1,207 @@ +# (C) Copyright IBM Corporation 2026. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +# 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 VERBOSE=false + +# Install WebSphere Liberty +ARG LIBERTY_VERSION=26.0.0.8 +ARG LIBERTY_URL +ARG DOWNLOAD_OPTIONS="" +ARG LIBERTY_SHA=b1e668e68b05987880ce8ea20ba8ced87ee69cc3 + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +RUN microdnf -y install shadow-utils unzip wget findutils openssl \ + && mkdir -p /licenses \ +# This is removed compared to the UBI8 dockerfile as the base +# java dockerfile already adds this user +# && useradd -u 1001 -r -g 0 -s /usr/sbin/nologin default \ + && LIBERTY_URL=${LIBERTY_URL:-$(wget -q -O - https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml | grep -E "^\s*kernel:.*${LIBERTY_VERSION}\.zip" | sed -n 's/\s*kernel:\s//p' | tr -d '\r' )} \ + && if [ ! -f /tmp/wlp.zip ]; then wget $DOWNLOAD_OPTIONS $LIBERTY_URL -U UA-IBM-WebSphere-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 g+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ibm \ + && chown -R 1001:0 /opt/ibm/wlp \ + && chmod -R g+rw /opt/ibm/wlp \ + && cp -a /opt/ibm/wlp/lafiles/. /licenses/ + +# 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 VERBOSE=false +ARG OPENJ9_SCC=true + +ARG LIBERTY_VERSION=26.0.0.8 +ARG LIBERTY_BUILD_LABEL=cl260820260725-1102 + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="IBM" \ + org.opencontainers.image.url="https://github.com/WASdev/ci.docker" \ + org.opencontainers.image.documentation="https://www.ibm.com/support/knowledgecenter/SSAW57_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/cwlp_about.html" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + org.opencontainers.image.description="This image contains the WebSphere Liberty runtime with IBM's Java and Red Hat's UBI 10 micro as the base OS. For more information on this image please see https://ibm.biz/wl-app-image-template" \ + org.opencontainers.image.title="IBM WebSphere Liberty" \ + liberty.version="$LIBERTY_VERSION" \ + com.ibm.websphere.liberty.version="$LIBERTY_VERSION" \ + vendor="IBM" \ + name="IBM WebSphere Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for WebSphere Liberty with IBM's Java and Red Hat's UBI 10 micro" \ + description="This image contains the WebSphere Liberty runtime with IBM's Java and Red Hat's UBI 10 micro as the base OS. For more information on this image please see https://ibm.biz/wl-app-image-template" + +ENV PATH=$PATH:/opt/ibm/wlp/bin:/opt/ibm/helpers/build:/opt/ibm/helpers/runtime + +# Add labels for consumption by IBM Product Insights +LABEL "ProductID"="fbf6a96d49214c0abc6a3bc5da6e48cd" \ + "ProductName"="WebSphere Application Server Liberty" \ + "ProductVersion"="$LIBERTY_VERSION" \ + "BuildLabel"="$LIBERTY_BUILD_LABEL" + +# 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/ibm/wlp \ + && chown -R 1001:0 /opt/ibm/wlp \ + && chmod -R g+rw /opt/ibm/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/ibm/wlp /opt/ibm/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ibm/wlp/output \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure WebSphere Liberty +RUN /opt/ibm/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ibm/wlp/usr/servers/defaultServer/server.env + +COPY NOTICES /opt/ibm/NOTICES +COPY helpers/ /opt/ibm/helpers/ +COPY fixes/ /opt/ibm/fixes/ + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir /etc/wlp \ + && mkdir -p /opt/ibm/wlp/usr/shared/resources/lib.index.cache \ + && mkdir -p /home/default \ + && mkdir /output \ + && chmod -t /output \ + && rm -rf /output \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ibm/wlp/usr/servers/defaultServer /config \ + && ln -s /opt/ibm/wlp /liberty \ + && ln -s /opt/ibm/fixes /fixes \ + && ln -s /opt/ibm/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ibm/helpers \ + && chmod -R ug+rwx /opt/ibm/helpers \ + && chown -R 1001:0 /opt/ibm/fixes \ + && chmod -R g+rwx /opt/ibm/fixes \ + && chown -R 1001:0 /opt/ibm/wlp/usr \ + && chmod -R g+rw /opt/ibm/wlp/usr \ + && chown -R 1001:0 /opt/ibm/wlp/output \ + && chmod -R g+rw /opt/ibm/wlp/output \ + && chown -R 1001:0 /etc/wlp \ + && chmod -R g+rw /etc/wlp \ + && chown -R 1001:0 /home/default \ + && chmod -R g+rw /home/default \ + && 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/ibm/wlp/output \ + && chmod -R g+rwx /opt/ibm/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/ibm/helpers/runtime/docker-server.sh"] +CMD ["/opt/ibm/wlp/bin/server", "run", "defaultServer"] diff --git a/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk11 b/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk11 new file mode 100644 index 000000000..b711ea76d --- /dev/null +++ b/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk11 @@ -0,0 +1,191 @@ +# (C) Copyright IBM Corporation 2026. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG VERBOSE=false + +# Install WebSphere Liberty +ARG LIBERTY_VERSION=26.0.0.8 +ARG LIBERTY_URL +ARG DOWNLOAD_OPTIONS="" +ARG LIBERTY_SHA=b1e668e68b05987880ce8ea20ba8ced87ee69cc3 + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +RUN microdnf -y install shadow-utils unzip wget openssl \ + && mkdir -p /licenses \ + && useradd -u 1001 -r -g 0 -s /usr/sbin/nologin default \ + && LIBERTY_URL=${LIBERTY_URL:-$(wget -q -O - https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml | grep -E "^\s*kernel:.*${LIBERTY_VERSION}\.zip" | sed -n 's/\s*kernel:\s//p' | tr -d '\r' )} \ + && if [ ! -f /tmp/wlp.zip ]; then wget $DOWNLOAD_OPTIONS $LIBERTY_URL -U UA-IBM-WebSphere-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 g+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ibm \ + && chown -R 1001:0 /opt/ibm/wlp \ + && chmod -R g+rw /opt/ibm/wlp \ + && cp -a /opt/ibm/wlp/lafiles/. /licenses/ + +# 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 VERBOSE=false +ARG OPENJ9_SCC=true + +ARG LIBERTY_VERSION=26.0.0.8 +ARG LIBERTY_BUILD_LABEL=cl260820260725-1102 + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="IBM" \ + org.opencontainers.image.url="https://github.com/WASdev/ci.docker" \ + org.opencontainers.image.documentation="https://www.ibm.com/support/knowledgecenter/SSAW57_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/cwlp_about.html" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + org.opencontainers.image.description="This image contains the WebSphere Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro as the base OS. For more information on this image please see https://ibm.biz/wl-app-image-template" \ + org.opencontainers.image.title="IBM WebSphere Liberty" \ + liberty.version="$LIBERTY_VERSION" \ + com.ibm.websphere.liberty.version="$LIBERTY_VERSION" \ + vendor="IBM" \ + name="IBM WebSphere Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for WebSphere Liberty with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro" \ + description="This image contains the WebSphere Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro as the base OS. For more information on this image please see https://ibm.biz/wl-app-image-template" + +ENV PATH=$PATH:/opt/ibm/wlp/bin:/opt/ibm/helpers/build:/opt/ibm/helpers/runtime + +# Add labels for consumption by IBM Product Insights +LABEL "ProductID"="fbf6a96d49214c0abc6a3bc5da6e48cd" \ + "ProductName"="WebSphere Application Server Liberty" \ + "ProductVersion"="$LIBERTY_VERSION" \ + "BuildLabel"="$LIBERTY_BUILD_LABEL" + +# 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/ibm/wlp \ + && chown -R 1001:0 /opt/ibm/wlp \ + && chmod -R g+rw /opt/ibm/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/ibm/wlp /opt/ibm/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ibm/wlp/output \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure WebSphere Liberty +RUN /opt/ibm/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ibm/wlp/usr/servers/defaultServer/server.env + +COPY NOTICES /opt/ibm/NOTICES +COPY helpers/ /opt/ibm/helpers/ +COPY fixes/ /opt/ibm/fixes/ + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir /etc/wlp \ + && mkdir -p /opt/ibm/wlp/usr/shared/resources/lib.index.cache \ + && mkdir -p /home/default \ + && mkdir /output \ + && chmod -t /output \ + && rm -rf /output \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ibm/wlp/usr/servers/defaultServer /config \ + && ln -s /opt/ibm/wlp /liberty \ + && ln -s /opt/ibm/fixes /fixes \ + && ln -s /opt/ibm/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ibm/helpers \ + && chmod -R ug+rwx /opt/ibm/helpers \ + && chown -R 1001:0 /opt/ibm/fixes \ + && chmod -R g+rwx /opt/ibm/fixes \ + && chown -R 1001:0 /opt/ibm/wlp/usr \ + && chmod -R g+rw /opt/ibm/wlp/usr \ + && chown -R 1001:0 /opt/ibm/wlp/output \ + && chmod -R g+rw /opt/ibm/wlp/output \ + && 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 \ + && chown -R 1001:0 /home/default \ + && chmod -R g+rw /home/default \ + && 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/ibm/wlp/output \ + && chmod -R g+rwx /opt/ibm/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/ibm/helpers/runtime/docker-server.sh"] +CMD ["/opt/ibm/wlp/bin/server", "run", "defaultServer"] diff --git a/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk17 b/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk17 new file mode 100644 index 000000000..1f3d238a5 --- /dev/null +++ b/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk17 @@ -0,0 +1,191 @@ +# (C) Copyright IBM Corporation 2026. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG VERBOSE=false + +# Install WebSphere Liberty +ARG LIBERTY_VERSION=26.0.0.8 +ARG LIBERTY_URL +ARG DOWNLOAD_OPTIONS="" +ARG LIBERTY_SHA=b1e668e68b05987880ce8ea20ba8ced87ee69cc3 + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +RUN microdnf -y install shadow-utils unzip wget openssl \ + && mkdir -p /licenses \ + && useradd -u 1001 -r -g 0 -s /usr/sbin/nologin default \ + && LIBERTY_URL=${LIBERTY_URL:-$(wget -q -O - https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml | grep -E "^\s*kernel:.*${LIBERTY_VERSION}\.zip" | sed -n 's/\s*kernel:\s//p' | tr -d '\r' )} \ + && if [ ! -f /tmp/wlp.zip ]; then wget $DOWNLOAD_OPTIONS $LIBERTY_URL -U UA-IBM-WebSphere-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 g+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ibm \ + && chown -R 1001:0 /opt/ibm/wlp \ + && chmod -R g+rw /opt/ibm/wlp \ + && cp -a /opt/ibm/wlp/lafiles/. /licenses/ + +# 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 VERBOSE=false +ARG OPENJ9_SCC=true + +ARG LIBERTY_VERSION=26.0.0.8 +ARG LIBERTY_BUILD_LABEL=cl260820260725-1102 + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="IBM" \ + org.opencontainers.image.url="https://github.com/WASdev/ci.docker" \ + org.opencontainers.image.documentation="https://www.ibm.com/support/knowledgecenter/SSAW57_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/cwlp_about.html" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + org.opencontainers.image.description="This image contains the WebSphere Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro as the base OS. For more information on this image please see https://ibm.biz/wl-app-image-template" \ + org.opencontainers.image.title="IBM WebSphere Liberty" \ + liberty.version="$LIBERTY_VERSION" \ + com.ibm.websphere.liberty.version="$LIBERTY_VERSION" \ + vendor="IBM" \ + name="IBM WebSphere Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for WebSphere Liberty with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro" \ + description="This image contains the WebSphere Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro as the base OS. For more information on this image please see https://ibm.biz/wl-app-image-template" + +ENV PATH=$PATH:/opt/ibm/wlp/bin:/opt/ibm/helpers/build:/opt/ibm/helpers/runtime + +# Add labels for consumption by IBM Product Insights +LABEL "ProductID"="fbf6a96d49214c0abc6a3bc5da6e48cd" \ + "ProductName"="WebSphere Application Server Liberty" \ + "ProductVersion"="$LIBERTY_VERSION" \ + "BuildLabel"="$LIBERTY_BUILD_LABEL" + +# 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/ibm/wlp \ + && chown -R 1001:0 /opt/ibm/wlp \ + && chmod -R g+rw /opt/ibm/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/ibm/wlp /opt/ibm/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ibm/wlp/output \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure WebSphere Liberty +RUN /opt/ibm/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ibm/wlp/usr/servers/defaultServer/server.env + +COPY NOTICES /opt/ibm/NOTICES +COPY helpers/ /opt/ibm/helpers/ +COPY fixes/ /opt/ibm/fixes/ + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir /etc/wlp \ + && mkdir -p /opt/ibm/wlp/usr/shared/resources/lib.index.cache \ + && mkdir -p /home/default \ + && mkdir /output \ + && chmod -t /output \ + && rm -rf /output \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ibm/wlp/usr/servers/defaultServer /config \ + && ln -s /opt/ibm/wlp /liberty \ + && ln -s /opt/ibm/fixes /fixes \ + && ln -s /opt/ibm/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ibm/helpers \ + && chmod -R ug+rwx /opt/ibm/helpers \ + && chown -R 1001:0 /opt/ibm/fixes \ + && chmod -R g+rwx /opt/ibm/fixes \ + && chown -R 1001:0 /opt/ibm/wlp/usr \ + && chmod -R g+rw /opt/ibm/wlp/usr \ + && chown -R 1001:0 /opt/ibm/wlp/output \ + && chmod -R g+rw /opt/ibm/wlp/output \ + && 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 \ + && chown -R 1001:0 /home/default \ + && chmod -R g+rw /home/default \ + && 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/ibm/wlp/output \ + && chmod -R g+rwx /opt/ibm/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/ibm/helpers/runtime/docker-server.sh"] +CMD ["/opt/ibm/wlp/bin/server", "run", "defaultServer"] diff --git a/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk21 b/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk21 new file mode 100644 index 000000000..3eefb2116 --- /dev/null +++ b/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk21 @@ -0,0 +1,191 @@ +# (C) Copyright IBM Corporation 2026. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG VERBOSE=false + +# Install WebSphere Liberty +ARG LIBERTY_VERSION=26.0.0.8 +ARG LIBERTY_URL +ARG DOWNLOAD_OPTIONS="" +ARG LIBERTY_SHA=b1e668e68b05987880ce8ea20ba8ced87ee69cc3 + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +RUN microdnf -y install shadow-utils unzip wget openssl \ + && mkdir -p /licenses \ + && useradd -u 1001 -r -g 0 -s /usr/sbin/nologin default \ + && LIBERTY_URL=${LIBERTY_URL:-$(wget -q -O - https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml | grep -E "^\s*kernel:.*${LIBERTY_VERSION}\.zip" | sed -n 's/\s*kernel:\s//p' | tr -d '\r' )} \ + && if [ ! -f /tmp/wlp.zip ]; then wget $DOWNLOAD_OPTIONS $LIBERTY_URL -U UA-IBM-WebSphere-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 g+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ibm \ + && chown -R 1001:0 /opt/ibm/wlp \ + && chmod -R g+rw /opt/ibm/wlp \ + && cp -a /opt/ibm/wlp/lafiles/. /licenses/ + +# 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 VERBOSE=false +ARG OPENJ9_SCC=true + +ARG LIBERTY_VERSION=26.0.0.8 +ARG LIBERTY_BUILD_LABEL=cl260820260725-1102 + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="IBM" \ + org.opencontainers.image.url="https://github.com/WASdev/ci.docker" \ + org.opencontainers.image.documentation="https://www.ibm.com/support/knowledgecenter/SSAW57_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/cwlp_about.html" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + org.opencontainers.image.description="This image contains the WebSphere Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro as the base OS. For more information on this image please see https://ibm.biz/wl-app-image-template" \ + org.opencontainers.image.title="IBM WebSphere Liberty" \ + liberty.version="$LIBERTY_VERSION" \ + com.ibm.websphere.liberty.version="$LIBERTY_VERSION" \ + vendor="IBM" \ + name="IBM WebSphere Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for WebSphere Liberty with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro" \ + description="This image contains the WebSphere Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro as the base OS. For more information on this image please see https://ibm.biz/wl-app-image-template" + +ENV PATH=$PATH:/opt/ibm/wlp/bin:/opt/ibm/helpers/build:/opt/ibm/helpers/runtime + +# Add labels for consumption by IBM Product Insights +LABEL "ProductID"="fbf6a96d49214c0abc6a3bc5da6e48cd" \ + "ProductName"="WebSphere Application Server Liberty" \ + "ProductVersion"="$LIBERTY_VERSION" \ + "BuildLabel"="$LIBERTY_BUILD_LABEL" + +# 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/ibm/wlp \ + && chown -R 1001:0 /opt/ibm/wlp \ + && chmod -R g+rw /opt/ibm/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/ibm/wlp /opt/ibm/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ibm/wlp/output \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure WebSphere Liberty +RUN /opt/ibm/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ibm/wlp/usr/servers/defaultServer/server.env + +COPY NOTICES /opt/ibm/NOTICES +COPY helpers/ /opt/ibm/helpers/ +COPY fixes/ /opt/ibm/fixes/ + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir /etc/wlp \ + && mkdir -p /opt/ibm/wlp/usr/shared/resources/lib.index.cache \ + && mkdir -p /home/default \ + && mkdir /output \ + && chmod -t /output \ + && rm -rf /output \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ibm/wlp/usr/servers/defaultServer /config \ + && ln -s /opt/ibm/wlp /liberty \ + && ln -s /opt/ibm/fixes /fixes \ + && ln -s /opt/ibm/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ibm/helpers \ + && chmod -R ug+rwx /opt/ibm/helpers \ + && chown -R 1001:0 /opt/ibm/fixes \ + && chmod -R g+rwx /opt/ibm/fixes \ + && chown -R 1001:0 /opt/ibm/wlp/usr \ + && chmod -R g+rw /opt/ibm/wlp/usr \ + && chown -R 1001:0 /opt/ibm/wlp/output \ + && chmod -R g+rw /opt/ibm/wlp/output \ + && 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 \ + && chown -R 1001:0 /home/default \ + && chmod -R g+rw /home/default \ + && 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/ibm/wlp/output \ + && chmod -R g+rwx /opt/ibm/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/ibm/helpers/runtime/docker-server.sh"] +CMD ["/opt/ibm/wlp/bin/server", "run", "defaultServer"] diff --git a/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk25 b/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk25 new file mode 100644 index 000000000..859124d05 --- /dev/null +++ b/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk25 @@ -0,0 +1,191 @@ +# (C) Copyright IBM Corporation 2026. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG VERBOSE=false + +# Install WebSphere Liberty +ARG LIBERTY_VERSION=26.0.0.8 +ARG LIBERTY_URL +ARG DOWNLOAD_OPTIONS="" +ARG LIBERTY_SHA=b1e668e68b05987880ce8ea20ba8ced87ee69cc3 + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +RUN microdnf -y install shadow-utils unzip wget openssl \ + && mkdir -p /licenses \ + && useradd -u 1001 -r -g 0 -s /usr/sbin/nologin default \ + && LIBERTY_URL=${LIBERTY_URL:-$(wget -q -O - https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml | grep -E "^\s*kernel:.*${LIBERTY_VERSION}\.zip" | sed -n 's/\s*kernel:\s//p' | tr -d '\r' )} \ + && if [ ! -f /tmp/wlp.zip ]; then wget $DOWNLOAD_OPTIONS $LIBERTY_URL -U UA-IBM-WebSphere-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 g+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ibm \ + && chown -R 1001:0 /opt/ibm/wlp \ + && chmod -R g+rw /opt/ibm/wlp \ + && cp -a /opt/ibm/wlp/lafiles/. /licenses/ + +# 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 VERBOSE=false +ARG OPENJ9_SCC=true + +ARG LIBERTY_VERSION=26.0.0.8 +ARG LIBERTY_BUILD_LABEL=cl260820260725-1102 + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="IBM" \ + org.opencontainers.image.url="https://github.com/WASdev/ci.docker" \ + org.opencontainers.image.documentation="https://www.ibm.com/support/knowledgecenter/SSAW57_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/cwlp_about.html" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + org.opencontainers.image.description="This image contains the WebSphere Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro as the base OS. For more information on this image please see https://ibm.biz/wl-app-image-template" \ + org.opencontainers.image.title="IBM WebSphere Liberty" \ + liberty.version="$LIBERTY_VERSION" \ + com.ibm.websphere.liberty.version="$LIBERTY_VERSION" \ + vendor="IBM" \ + name="IBM WebSphere Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for WebSphere Liberty with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro" \ + description="This image contains the WebSphere Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro as the base OS. For more information on this image please see https://ibm.biz/wl-app-image-template" + +ENV PATH=$PATH:/opt/ibm/wlp/bin:/opt/ibm/helpers/build:/opt/ibm/helpers/runtime + +# Add labels for consumption by IBM Product Insights +LABEL "ProductID"="fbf6a96d49214c0abc6a3bc5da6e48cd" \ + "ProductName"="WebSphere Application Server Liberty" \ + "ProductVersion"="$LIBERTY_VERSION" \ + "BuildLabel"="$LIBERTY_BUILD_LABEL" + +# 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/ibm/wlp \ + && chown -R 1001:0 /opt/ibm/wlp \ + && chmod -R g+rw /opt/ibm/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/ibm/wlp /opt/ibm/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ibm/wlp/output \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure WebSphere Liberty +RUN /opt/ibm/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ibm/wlp/usr/servers/defaultServer/server.env + +COPY NOTICES /opt/ibm/NOTICES +COPY helpers/ /opt/ibm/helpers/ +COPY fixes/ /opt/ibm/fixes/ + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir /etc/wlp \ + && mkdir -p /opt/ibm/wlp/usr/shared/resources/lib.index.cache \ + && mkdir -p /home/default \ + && mkdir /output \ + && chmod -t /output \ + && rm -rf /output \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ibm/wlp/usr/servers/defaultServer /config \ + && ln -s /opt/ibm/wlp /liberty \ + && ln -s /opt/ibm/fixes /fixes \ + && ln -s /opt/ibm/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ibm/helpers \ + && chmod -R ug+rwx /opt/ibm/helpers \ + && chown -R 1001:0 /opt/ibm/fixes \ + && chmod -R g+rwx /opt/ibm/fixes \ + && chown -R 1001:0 /opt/ibm/wlp/usr \ + && chmod -R g+rw /opt/ibm/wlp/usr \ + && chown -R 1001:0 /opt/ibm/wlp/output \ + && chmod -R g+rw /opt/ibm/wlp/output \ + && 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 \ + && chown -R 1001:0 /home/default \ + && chmod -R g+rw /home/default \ + && 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/ibm/wlp/output \ + && chmod -R g+rwx /opt/ibm/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/ibm/helpers/runtime/docker-server.sh"] +CMD ["/opt/ibm/wlp/bin/server", "run", "defaultServer"] diff --git a/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk8 b/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk8 new file mode 100644 index 000000000..0d34796b8 --- /dev/null +++ b/ga/latest/kernel/Dockerfile.ubi10-micro.openjdk8 @@ -0,0 +1,191 @@ +# (C) Copyright IBM Corporation 2026. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +FROM registry.access.redhat.com/ubi10/ubi-minimal:latest AS builder + +USER root + +ARG VERBOSE=false + +# Install WebSphere Liberty +ARG LIBERTY_VERSION=26.0.0.8 +ARG LIBERTY_URL +ARG DOWNLOAD_OPTIONS="" +ARG LIBERTY_SHA=b1e668e68b05987880ce8ea20ba8ced87ee69cc3 + +# If there is a local copy of the image use that instead +COPY resources/ /tmp/ + +RUN microdnf -y install shadow-utils unzip wget openssl \ + && mkdir -p /licenses \ + && useradd -u 1001 -r -g 0 -s /usr/sbin/nologin default \ + && LIBERTY_URL=${LIBERTY_URL:-$(wget -q -O - https://public.dhe.ibm.com/ibmdl/export/pub/software/websphere/wasdev/downloads/wlp/index.yml | grep -E "^\s*kernel:.*${LIBERTY_VERSION}\.zip" | sed -n 's/\s*kernel:\s//p' | tr -d '\r' )} \ + && if [ ! -f /tmp/wlp.zip ]; then wget $DOWNLOAD_OPTIONS $LIBERTY_URL -U UA-IBM-WebSphere-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 g+x /usr/bin \ + && unzip -q /tmp/wlp.zip -d /opt/ibm \ + && chown -R 1001:0 /opt/ibm/wlp \ + && chmod -R g+rw /opt/ibm/wlp \ + && cp -a /opt/ibm/wlp/lafiles/. /licenses/ + +# 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 VERBOSE=false +ARG OPENJ9_SCC=true + +ARG LIBERTY_VERSION=26.0.0.8 +ARG LIBERTY_BUILD_LABEL=cl260820260725-1102 + +LABEL org.opencontainers.image.authors="Leo Christy Jesuraj, Iain Lewis, Melissa Lee, Kirby Chin" \ + org.opencontainers.image.vendor="IBM" \ + org.opencontainers.image.url="https://github.com/WASdev/ci.docker" \ + org.opencontainers.image.documentation="https://www.ibm.com/support/knowledgecenter/SSAW57_liberty/com.ibm.websphere.wlp.nd.multiplatform.doc/ae/cwlp_about.html" \ + org.opencontainers.image.version="$LIBERTY_VERSION" \ + org.opencontainers.image.revision="$LIBERTY_BUILD_LABEL" \ + org.opencontainers.image.description="This image contains the WebSphere Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro as the base OS. For more information on this image please see https://ibm.biz/wl-app-image-template" \ + org.opencontainers.image.title="IBM WebSphere Liberty" \ + liberty.version="$LIBERTY_VERSION" \ + com.ibm.websphere.liberty.version="$LIBERTY_VERSION" \ + vendor="IBM" \ + name="IBM WebSphere Liberty" \ + version="$LIBERTY_VERSION" \ + summary="Image for WebSphere Liberty with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro" \ + description="This image contains the WebSphere Liberty runtime with IBM Semeru Runtime Open Edition OpenJDK with OpenJ9 and Red Hat's UBI 10 micro as the base OS. For more information on this image please see https://ibm.biz/wl-app-image-template" + +ENV PATH=$PATH:/opt/ibm/wlp/bin:/opt/ibm/helpers/build:/opt/ibm/helpers/runtime + +# Add labels for consumption by IBM Product Insights +LABEL "ProductID"="fbf6a96d49214c0abc6a3bc5da6e48cd" \ + "ProductName"="WebSphere Application Server Liberty" \ + "ProductVersion"="$LIBERTY_VERSION" \ + "BuildLabel"="$LIBERTY_BUILD_LABEL" + +# 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/ibm/wlp \ + && chown -R 1001:0 /opt/ibm/wlp \ + && chmod -R g+rw /opt/ibm/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/ibm/wlp /opt/ibm/wlp +COPY --from=builder /licenses /licenses + +# Set Path Shortcuts +ENV LOG_DIR=/liberty/logs \ + WLP_OUTPUT_DIR=/opt/ibm/wlp/output \ + OPENJ9_SCC=$OPENJ9_SCC + +# Configure WebSphere Liberty +RUN /opt/ibm/wlp/bin/server create \ + && rm -rf $WLP_OUTPUT_DIR/.classCache /output/workarea \ + && rm -rf /opt/ibm/wlp/usr/servers/defaultServer/server.env + +COPY NOTICES /opt/ibm/NOTICES +COPY helpers/ /opt/ibm/helpers/ +COPY fixes/ /opt/ibm/fixes/ + +# Create symlinks && set permissions for non-root user +RUN mkdir /logs \ + && chown -R 1001:0 /logs \ + && chmod -R g+rw /logs \ + && mkdir /etc/wlp \ + && mkdir -p /opt/ibm/wlp/usr/shared/resources/lib.index.cache \ + && mkdir -p /home/default \ + && mkdir /output \ + && chmod -t /output \ + && rm -rf /output \ + && ln -s $WLP_OUTPUT_DIR/defaultServer /output \ + && ln -s /opt/ibm/wlp/usr/servers/defaultServer /config \ + && ln -s /opt/ibm/wlp /liberty \ + && ln -s /opt/ibm/fixes /fixes \ + && ln -s /opt/ibm/wlp/usr/shared/resources/lib.index.cache /lib.index.cache \ + && mkdir -p /config/configDropins/defaults \ + && mkdir -p /config/configDropins/overrides \ + && chown -R 1001:0 /config \ + && chmod -R g+rw /config \ + && chown -R 1001:0 /opt/ibm/helpers \ + && chmod -R ug+rwx /opt/ibm/helpers \ + && chown -R 1001:0 /opt/ibm/fixes \ + && chmod -R g+rwx /opt/ibm/fixes \ + && chown -R 1001:0 /opt/ibm/wlp/usr \ + && chmod -R g+rw /opt/ibm/wlp/usr \ + && chown -R 1001:0 /opt/ibm/wlp/output \ + && chmod -R g+rw /opt/ibm/wlp/output \ + && 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 \ + && chown -R 1001:0 /home/default \ + && chmod -R g+rw /home/default \ + && 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/ibm/wlp/output \ + && chmod -R g+rwx /opt/ibm/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/ibm/helpers/runtime/docker-server.sh"] +CMD ["/opt/ibm/wlp/bin/server", "run", "defaultServer"] diff --git a/ga/latest/kernel/helpers/build/configuration_snippets/http-endpoint-disabled.xml b/ga/latest/kernel/helpers/build/configuration_snippets/http-endpoint-disabled.xml new file mode 100644 index 000000000..51ee43670 --- /dev/null +++ b/ga/latest/kernel/helpers/build/configuration_snippets/http-endpoint-disabled.xml @@ -0,0 +1,4 @@ + + + + diff --git a/ga/latest/kernel/helpers/build/configuration_snippets/update-trigger-disabled.xml b/ga/latest/kernel/helpers/build/configuration_snippets/update-trigger-disabled.xml new file mode 100644 index 000000000..b97391b58 --- /dev/null +++ b/ga/latest/kernel/helpers/build/configuration_snippets/update-trigger-disabled.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/ga/latest/kernel/helpers/build/configure.sh b/ga/latest/kernel/helpers/build/configure.sh index a1ed20628..26032b541 100755 --- a/ga/latest/kernel/helpers/build/configure.sh +++ b/ga/latest/kernel/helpers/build/configure.sh @@ -13,6 +13,13 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Use curl/wget to warm endpoints +if command -v curl > /dev/null 2>&1; then + http_download() { curl -sS --insecure -o "$1" "$2"; } +else + http_download() { wget -q --no-check-certificate -O "$1" "$2"; } +fi + # Determine if featureUtility ran in an earlier build step if /opt/ibm/helpers/build/internal/features-installed.sh; then FEATURES_INSTALLED=true @@ -36,6 +43,17 @@ function main() { mkdir -p ${SNIPPETS_TARGET} mkdir -p ${SNIPPETS_TARGET_DEFAULTS} + # 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-endpoint-disabled.xml $SNIPPETS_TARGET/http-endpoint.xml + fi + # Check for each Liberty value-add functionality if [ "$FEATURES_INSTALLED" == "false" ]; then # HTTP Endpoint @@ -142,7 +160,7 @@ function main() { if [ "$SKIP_FEATURE_INSTALL" != "true" ] && [ "$FEATURES_INSTALLED" == "false" ]; then # Install needed features if [ "$FEATURE_REPO_URL" ]; then - curl -k --fail $FEATURE_REPO_URL > /tmp/repo.zip + http_download /tmp/repo.zip $FEATURE_REPO_URL installUtility install --acceptLicense defaultServer --from=/tmp/repo.zip || rc=$?; if [ $rc -ne 22 ]; then exit $rc; fi rm -rf /tmp/repo.zip else diff --git a/ga/latest/kernel/helpers/build/features.sh b/ga/latest/kernel/helpers/build/features.sh index 2773c5066..6331c3e34 100755 --- a/ga/latest/kernel/helpers/build/features.sh +++ b/ga/latest/kernel/helpers/build/features.sh @@ -43,4 +43,9 @@ fi featureUtility installServerFeatures --acceptLicense defaultServer --noCache find /opt/ibm/wlp/lib /opt/ibm/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/ibm/wlp/bin/productInfo validate +fi + echo "features.sh script has been run" > /logs/features.log diff --git a/ga/latest/kernel/helpers/build/populate_scc.sh b/ga/latest/kernel/helpers/build/populate_scc.sh index 661f253b7..5b5792b32 100755 --- a/ga/latest/kernel/helpers/build/populate_scc.sh +++ b/ga/latest/kernel/helpers/build/populate_scc.sh @@ -14,6 +14,13 @@ # limitations under the License. . /opt/ibm/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 # 32-bit JVMs don't supported multi-layered SCCs. @@ -23,9 +30,9 @@ 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_ENDPOINT_URL=https://localhost:9443/ WARM_OPENAPI_ENDPOINT=true -WARM_OPENAPI_ENDPOINT_URL=localhost:9080/openapi +WARM_OPENAPI_ENDPOINT_URL=https://localhost:9443/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. @@ -97,10 +104,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) @@ -133,11 +140,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/ibm/wlp/bin/server stop @@ -168,11 +175,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/ibm/wlp/bin/server stop