Namespace
halohub
Image / Tag
halo-pro:2
Content Digest
sha256:e293cf1d342787f7c1b355086f829dc88e2657895e8565eda6a4d30d95770656
Details
Created

2026-02-02 07:59:20 UTC

Size

247 MB

Content Digest
Labels
  • maintainer
    johnniang <[email protected]>
  • org.opencontainers.image.created
    2026-02-02T07:58:22.252Z
  • org.opencontainers.image.description
  • org.opencontainers.image.licenses
    GPL-3.0
  • org.opencontainers.image.ref.name
    ubuntu
  • org.opencontainers.image.revision
    16acd58d2196b777b31cc0883e79ea69f7e10a4f
  • org.opencontainers.image.source
    https://github.com/lxware-dev/halo-pro
  • org.opencontainers.image.title
    halo-pro
  • org.opencontainers.image.url
    https://github.com/lxware-dev/halo-pro
  • org.opencontainers.image.version
    2

Environment
HALO_WORK_DIR

/root/.halo2

JAVA_HOME

/opt/java/openjdk

JAVA_TOOL_OPTIONS

-XX:+IgnoreUnrecognizedVMOptions -XX:+PortableSharedCache -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal

JAVA_VERSION

jdk-21.0.9+10_openj9-0.56.0

JVM_OPTS

LANG

en_US.UTF-8

LANGUAGE

en_US:en

LC_ALL

en_US.UTF-8

PATH

/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

SPRING_CONFIG_LOCATION

optional:classpath:/;optional:file:/root/.halo2/

TZ

Asia/Shanghai


Layers

[#000] sha256:a3629ac5b9f4680dc2032439ff2354e73b06aecc2e68f0035a2d7c001c8b4114 - 11.47% (28.3 MB)

[#001] sha256:61bc454e75d07eb2df1cfcd000b45964f4aef8285c3020cdb55339ca55aaed1a - 4.94% (12.2 MB)

[#002] sha256:f168fd6160eac32a86899657a1ce6baae6dafc7a6a1b52dcc09f6c1ed8e2c4af - 23.09% (57.1 MB)

[#003] sha256:ba689e11904a1ba9a71ed0f334beb765a18150026a2b012af8a492c52b0da169 - 2.03% (5.01 MB)

[#004] sha256:99ea3b961dad2d46faa9ee78b3e4087992bd3c96cc38dd6d2a8f278ac0e8947c - 0.0% (101 Bytes)

[#005] sha256:c6d3edd1aba5216fde868b96771645f522141871338f42552d2653c90db6a500 - 50.81% (126 MB)

[#006] sha256:ddbe0e9ab7625e18787188b0e9d614962e4c89fc23a9ed1c9eff8e015ada89c7 - 0.05% (130 KB)

[#007] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)

[#008] sha256:7554f7b79a41ae2813994b3e7e56efab1cd97cf38cb632cb40486639bb86e756 - 7.61% (18.8 MB)

[#009] sha256:78c68a9eb872c8b3e4d429f6456de8a09c550dca18603ef97cb53904d275d432 - 0.0% (192 Bytes)


History
2026-01-13 05:37:25 UTC

/bin/sh -c #(nop) ARG RELEASE

2026-01-13 05:37:25 UTC

/bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH

2026-01-13 05:37:25 UTC

/bin/sh -c #(nop) LABEL org.opencontainers.image.ref.name=ubuntu

2026-01-13 05:37:25 UTC

/bin/sh -c #(nop) LABEL org.opencontainers.image.version=24.04

2026-01-13 05:37:27 UTC

/bin/sh -c #(nop) ADD file:3077ee44db3cc7d38740d60a05c81418dd3825a007db473658464f52689e867b in /

2026-01-13 05:37:27 UTC

/bin/sh -c #(nop) CMD ["/bin/bash"]

2026-01-15 22:28:28 UTC (buildkit.dockerfile.v0)

ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8

2026-01-15 22:28:28 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen en_US.UTF-8 && rm -rf /var/lib/apt/lists/* # buildkit

2026-01-15 22:28:28 UTC (buildkit.dockerfile.v0)

ENV JAVA_VERSION=jdk-21.0.9+10_openj9-0.56.0

2026-01-15 22:28:30 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in aarch64|arm64) ESUM='ac8c6c5aa3c345e14e82966972040b479d672c12e5cd0eaa52d8b38e6bdea40c'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_aarch64_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; amd64|x86_64) ESUM='6b3022f3d286b2fde9a964028da637a5ad9a93b1028741dcb72aa3bca49c83d2'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_x64_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; ppc64el|ppc64le) ESUM='876af8243616745796762539816cdb37c194e4b5942398277d6ccd35e96e3dcc'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_ppc64le_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; s390x) ESUM='e7828369bf76eb25426b807c039974f067888e1f67e9e461274407675946738e'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_s390x_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; *) echo "Unsupported arch: ${ARCH}"; exit 1; ;; esac; curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; mkdir -p /opt/java/openjdk; cd /opt/java/openjdk; tar -xf /tmp/openjdk.tar.gz --strip-components=1; rm -rf /tmp/openjdk.tar.gz; # buildkit

2026-01-15 22:28:30 UTC (buildkit.dockerfile.v0)

ENV JAVA_HOME=/opt/java/openjdk PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2026-01-15 22:28:30 UTC (buildkit.dockerfile.v0)

ENV JAVA_TOOL_OPTIONS=-XX:+IgnoreUnrecognizedVMOptions -XX:+PortableSharedCache -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal

2026-01-15 22:29:01 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; unset OPENJ9_JAVA_OPTIONS; SCC_SIZE="50m"; DOWNLOAD_PATH_TOMCAT=/tmp/tomcat; INSTALL_PATH_TOMCAT=/opt/tomcat-home; TOMCAT_CHECKSUM="fc55589f28bf6659928167461c741649b6005b64285dd81df05bb5ee40f4c6de59b8ee3af84ff756ae1513fc47f5f73070e29313b555e27f096f25881c69841d"; TOMCAT_VERSION="9.0.112"; TOMCAT_FILENAME="apache-tomcat-${TOMCAT_VERSION}.tar.gz"; SUCCESS=; mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"; for baseUrl in https://dlcdn.apache.org/tomcat/tomcat-9/v${TOMCAT_VERSION}/bin https://archive.apache.org/dist/tomcat/tomcat-9/v${TOMCAT_VERSION}/bin ; do if curl -LfsSo "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${baseUrl}/${TOMCAT_FILENAME}" && [ -s "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz ]; then SUCCESS=1; break; fi; done; [ -n "$SUCCESS" ]; echo "${TOMCAT_CHECKSUM} ${DOWNLOAD_PATH_TOMCAT}/tomcat.tar.gz" | sha512sum -c -; tar -xf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1; rm -rf "${DOWNLOAD_PATH_TOMCAT}"; java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; export OPENJ9_JAVA_OPTIONS="-XX:+IProfileDuringStartupPhase -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; sleep 5; "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh -force; sleep 15; FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); DST_CACHE=$(java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy 2>&1 || true); SCC_SIZE=$(echo $SCC_SIZE | sed 's/.$//'); SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}"); [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1; SCC_SIZE="${SCC_SIZE}m"; java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; unset OPENJ9_JAVA_OPTIONS; export OPENJ9_JAVA_OPTIONS="-XX:+IProfileDuringStartupPhase -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; sleep 5; "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh -force; sleep 5; FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); echo "SCC layer is $FULL% full."; rm -rf "${INSTALL_PATH_TOMCAT}"; if [ -d "/opt/java/.scc" ]; then chmod -R 0777 /opt/java/.scc; fi; echo "SCC generation phase completed"; # buildkit

2026-02-02 07:59:06 UTC (buildkit.dockerfile.v0)

LABEL maintainer=johnniang <[email protected]>

2026-02-02 07:59:06 UTC (buildkit.dockerfile.v0)

WORKDIR /application

2026-02-02 07:59:18 UTC (buildkit.dockerfile.v0)

COPY application/dependencies/ ./ # buildkit

2026-02-02 07:59:18 UTC (buildkit.dockerfile.v0)

COPY application/spring-boot-loader/ ./ # buildkit

2026-02-02 07:59:18 UTC (buildkit.dockerfile.v0)

COPY application/snapshot-dependencies/ ./ # buildkit

2026-02-02 07:59:19 UTC (buildkit.dockerfile.v0)

COPY application/application/ ./ # buildkit

2026-02-02 07:59:19 UTC (buildkit.dockerfile.v0)

ENV JVM_OPTS= HALO_WORK_DIR=/root/.halo2 SPRING_CONFIG_LOCATION=optional:classpath:/;optional:file:/root/.halo2/ TZ=Asia/Shanghai

2026-02-02 07:59:20 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # buildkit

2026-02-02 07:59:20 UTC (buildkit.dockerfile.v0)

EXPOSE [8090/tcp]

2026-02-02 07:59:20 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["sh" "-c" "java ${JVM_OPTS} org.springframework.boot.loader.launch.JarLauncher ${0} ${@}"]

Details
Created

2026-02-02 08:00:18 UTC

Size

244 MB

Content Digest
Labels
  • maintainer
    johnniang <[email protected]>
  • org.opencontainers.image.created
    2026-02-02T07:58:22.252Z
  • org.opencontainers.image.description
  • org.opencontainers.image.licenses
    GPL-3.0
  • org.opencontainers.image.ref.name
    ubuntu
  • org.opencontainers.image.revision
    16acd58d2196b777b31cc0883e79ea69f7e10a4f
  • org.opencontainers.image.source
    https://github.com/lxware-dev/halo-pro
  • org.opencontainers.image.title
    halo-pro
  • org.opencontainers.image.url
    https://github.com/lxware-dev/halo-pro
  • org.opencontainers.image.version
    2

Environment
HALO_WORK_DIR

/root/.halo2

JAVA_HOME

/opt/java/openjdk

JAVA_TOOL_OPTIONS

-XX:+IgnoreUnrecognizedVMOptions -XX:+PortableSharedCache -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal

JAVA_VERSION

jdk-21.0.9+10_openj9-0.56.0

JVM_OPTS

LANG

en_US.UTF-8

LANGUAGE

en_US:en

LC_ALL

en_US.UTF-8

PATH

/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

SPRING_CONFIG_LOCATION

optional:classpath:/;optional:file:/root/.halo2/

TZ

Asia/Shanghai


Layers

[#000] sha256:36bf709aa36d66b784b0ba1aa3276848f28501175eeb4d7a310b1a98578f8558 - 11.26% (27.5 MB)

[#001] sha256:a2bc45546de032b58b68608da2dcaaf0b72ec44913f59faab5a535c61cef422b - 5.01% (12.2 MB)

[#002] sha256:1a3c16ab9cf21377b79668dff5ebcf8d961a67e58b4d7d9790d51e5d10ad5438 - 22.66% (55.4 MB)

[#003] sha256:86745d9879db34a38aefe8e76211769baab3987fe00473c7f2082e14a412963c - 1.96% (4.8 MB)

[#004] sha256:99ea3b961dad2d46faa9ee78b3e4087992bd3c96cc38dd6d2a8f278ac0e8947c - 0.0% (101 Bytes)

[#005] sha256:943802ee8261c7f9d60f2d04f79c11587b3ad263e8cbd5fd17e432e8776cf950 - 51.37% (126 MB)

[#006] sha256:599d89dec303355c49365b5405407d0cb2b57f316040c5e4c249a657eb5d748d - 0.05% (130 KB)

[#007] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)

[#008] sha256:49b036f1c02018d7de49ade14476eba23c703c0b7e87e98491bfb7b5d5bec4ff - 7.69% (18.8 MB)

[#009] sha256:424214f15249f3d54aaf514bae513f22e96ab4ad5b85d8bb591cce740834ef4a - 0.0% (191 Bytes)


History
2026-01-13 05:40:13 UTC

/bin/sh -c #(nop) ARG RELEASE

2026-01-13 05:40:13 UTC

/bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH

2026-01-13 05:40:13 UTC

/bin/sh -c #(nop) LABEL org.opencontainers.image.ref.name=ubuntu

2026-01-13 05:40:13 UTC

/bin/sh -c #(nop) LABEL org.opencontainers.image.version=24.04

2026-01-13 05:40:17 UTC

/bin/sh -c #(nop) ADD file:6089c6bede9eca8ec4f424e5798a0ae0712a6fe38c9b97f9afb9d24d9675024e in /

2026-01-13 05:40:17 UTC

/bin/sh -c #(nop) CMD ["/bin/bash"]

2026-01-15 22:27:15 UTC (buildkit.dockerfile.v0)

ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8

2026-01-15 22:27:15 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen en_US.UTF-8 && rm -rf /var/lib/apt/lists/* # buildkit

2026-01-15 22:27:15 UTC (buildkit.dockerfile.v0)

ENV JAVA_VERSION=jdk-21.0.9+10_openj9-0.56.0

2026-01-15 22:30:28 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in aarch64|arm64) ESUM='ac8c6c5aa3c345e14e82966972040b479d672c12e5cd0eaa52d8b38e6bdea40c'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_aarch64_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; amd64|x86_64) ESUM='6b3022f3d286b2fde9a964028da637a5ad9a93b1028741dcb72aa3bca49c83d2'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_x64_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; ppc64el|ppc64le) ESUM='876af8243616745796762539816cdb37c194e4b5942398277d6ccd35e96e3dcc'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_ppc64le_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; s390x) ESUM='e7828369bf76eb25426b807c039974f067888e1f67e9e461274407675946738e'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_s390x_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; *) echo "Unsupported arch: ${ARCH}"; exit 1; ;; esac; curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; mkdir -p /opt/java/openjdk; cd /opt/java/openjdk; tar -xf /tmp/openjdk.tar.gz --strip-components=1; rm -rf /tmp/openjdk.tar.gz; # buildkit

2026-01-15 22:30:28 UTC (buildkit.dockerfile.v0)

ENV JAVA_HOME=/opt/java/openjdk PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2026-01-15 22:30:28 UTC (buildkit.dockerfile.v0)

ENV JAVA_TOOL_OPTIONS=-XX:+IgnoreUnrecognizedVMOptions -XX:+PortableSharedCache -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal

2026-01-15 22:30:59 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; unset OPENJ9_JAVA_OPTIONS; SCC_SIZE="50m"; DOWNLOAD_PATH_TOMCAT=/tmp/tomcat; INSTALL_PATH_TOMCAT=/opt/tomcat-home; TOMCAT_CHECKSUM="fc55589f28bf6659928167461c741649b6005b64285dd81df05bb5ee40f4c6de59b8ee3af84ff756ae1513fc47f5f73070e29313b555e27f096f25881c69841d"; TOMCAT_VERSION="9.0.112"; TOMCAT_FILENAME="apache-tomcat-${TOMCAT_VERSION}.tar.gz"; SUCCESS=; mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"; for baseUrl in https://dlcdn.apache.org/tomcat/tomcat-9/v${TOMCAT_VERSION}/bin https://archive.apache.org/dist/tomcat/tomcat-9/v${TOMCAT_VERSION}/bin ; do if curl -LfsSo "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${baseUrl}/${TOMCAT_FILENAME}" && [ -s "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz ]; then SUCCESS=1; break; fi; done; [ -n "$SUCCESS" ]; echo "${TOMCAT_CHECKSUM} ${DOWNLOAD_PATH_TOMCAT}/tomcat.tar.gz" | sha512sum -c -; tar -xf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1; rm -rf "${DOWNLOAD_PATH_TOMCAT}"; java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; export OPENJ9_JAVA_OPTIONS="-XX:+IProfileDuringStartupPhase -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; sleep 5; "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh -force; sleep 15; FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); DST_CACHE=$(java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy 2>&1 || true); SCC_SIZE=$(echo $SCC_SIZE | sed 's/.$//'); SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}"); [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1; SCC_SIZE="${SCC_SIZE}m"; java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; unset OPENJ9_JAVA_OPTIONS; export OPENJ9_JAVA_OPTIONS="-XX:+IProfileDuringStartupPhase -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; sleep 5; "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh -force; sleep 5; FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); echo "SCC layer is $FULL% full."; rm -rf "${INSTALL_PATH_TOMCAT}"; if [ -d "/opt/java/.scc" ]; then chmod -R 0777 /opt/java/.scc; fi; echo "SCC generation phase completed"; # buildkit

2026-02-02 07:59:06 UTC (buildkit.dockerfile.v0)

LABEL maintainer=johnniang <[email protected]>

2026-02-02 07:59:06 UTC (buildkit.dockerfile.v0)

WORKDIR /application

2026-02-02 08:00:17 UTC (buildkit.dockerfile.v0)

COPY application/dependencies/ ./ # buildkit

2026-02-02 08:00:17 UTC (buildkit.dockerfile.v0)

COPY application/spring-boot-loader/ ./ # buildkit

2026-02-02 08:00:17 UTC (buildkit.dockerfile.v0)

COPY application/snapshot-dependencies/ ./ # buildkit

2026-02-02 08:00:18 UTC (buildkit.dockerfile.v0)

COPY application/application/ ./ # buildkit

2026-02-02 08:00:18 UTC (buildkit.dockerfile.v0)

ENV JVM_OPTS= HALO_WORK_DIR=/root/.halo2 SPRING_CONFIG_LOCATION=optional:classpath:/;optional:file:/root/.halo2/ TZ=Asia/Shanghai

2026-02-02 08:00:18 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # buildkit

2026-02-02 08:00:18 UTC (buildkit.dockerfile.v0)

EXPOSE [8090/tcp]

2026-02-02 08:00:18 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["sh" "-c" "java ${JVM_OPTS} org.springframework.boot.loader.launch.JarLauncher ${0} ${@}"]

Details
Created

2026-02-02 08:00:06 UTC

Size

253 MB

Content Digest
Labels
  • maintainer
    johnniang <[email protected]>
  • org.opencontainers.image.created
    2026-02-02T07:58:22.252Z
  • org.opencontainers.image.description
  • org.opencontainers.image.licenses
    GPL-3.0
  • org.opencontainers.image.ref.name
    ubuntu
  • org.opencontainers.image.revision
    16acd58d2196b777b31cc0883e79ea69f7e10a4f
  • org.opencontainers.image.source
    https://github.com/lxware-dev/halo-pro
  • org.opencontainers.image.title
    halo-pro
  • org.opencontainers.image.url
    https://github.com/lxware-dev/halo-pro
  • org.opencontainers.image.version
    2

Environment
HALO_WORK_DIR

/root/.halo2

JAVA_HOME

/opt/java/openjdk

JAVA_TOOL_OPTIONS

-XX:+IgnoreUnrecognizedVMOptions -XX:+PortableSharedCache -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal

JAVA_VERSION

jdk-21.0.9+10_openj9-0.56.0

JVM_OPTS

LANG

en_US.UTF-8

LANGUAGE

en_US:en

LC_ALL

en_US.UTF-8

PATH

/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

SPRING_CONFIG_LOCATION

optional:classpath:/;optional:file:/root/.halo2/

TZ

Asia/Shanghai


Layers

[#000] sha256:0dea13cf1fe062734821309e5f773a18c9ad629d9e93e3eba340bea036bccd8a - 12.93% (32.7 MB)

[#001] sha256:247743b74112587ede3172e78c813d972a5ddbe7e8f93b8d53a20108000903b9 - 5.2% (13.2 MB)

[#002] sha256:9c541dc5e7e21324d942f6c95f45ab1a48123d72dde4c262cd8f5b9075a55e20 - 23.26% (58.9 MB)

[#003] sha256:9b0d817c806c537243329fc05ad41b2400ed6116589be0c4bc49f5b20876641d - 1.5% (3.8 MB)

[#004] sha256:99ea3b961dad2d46faa9ee78b3e4087992bd3c96cc38dd6d2a8f278ac0e8947c - 0.0% (101 Bytes)

[#005] sha256:c0fa9ba02cb1a13489adab1d802c7745723464a49b34ae5d2a2cb0614314e963 - 49.63% (126 MB)

[#006] sha256:1c99939136d8d840947183fa876e075eecfbd11dc1891623184ba5c00fb95d92 - 0.05% (130 KB)

[#007] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)

[#008] sha256:984e11f9000fc496e67b705b2e389e19ef9d77ae6b92ee911389dd823313453e - 7.43% (18.8 MB)

[#009] sha256:53ba19a82fb231d9f7c57e535238a6440eb31635e5e086e960eb1a1f137deaf4 - 0.0% (191 Bytes)


History
2026-01-13 05:39:44 UTC

/bin/sh -c #(nop) ARG RELEASE

2026-01-13 05:39:44 UTC

/bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH

2026-01-13 05:39:44 UTC

/bin/sh -c #(nop) LABEL org.opencontainers.image.ref.name=ubuntu

2026-01-13 05:39:44 UTC

/bin/sh -c #(nop) LABEL org.opencontainers.image.version=24.04

2026-01-13 05:39:47 UTC

/bin/sh -c #(nop) ADD file:2f07f2a41a0f9535d0bb4dbf76ba28288335a19d601419d55d8004fa2b0faf12 in /

2026-01-13 05:39:48 UTC

/bin/sh -c #(nop) CMD ["/bin/bash"]

2026-01-15 22:26:55 UTC (buildkit.dockerfile.v0)

ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8

2026-01-15 22:26:55 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen en_US.UTF-8 && rm -rf /var/lib/apt/lists/* # buildkit

2026-01-15 22:26:55 UTC (buildkit.dockerfile.v0)

ENV JAVA_VERSION=jdk-21.0.9+10_openj9-0.56.0

2026-01-15 22:42:13 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in aarch64|arm64) ESUM='ac8c6c5aa3c345e14e82966972040b479d672c12e5cd0eaa52d8b38e6bdea40c'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_aarch64_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; amd64|x86_64) ESUM='6b3022f3d286b2fde9a964028da637a5ad9a93b1028741dcb72aa3bca49c83d2'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_x64_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; ppc64el|ppc64le) ESUM='876af8243616745796762539816cdb37c194e4b5942398277d6ccd35e96e3dcc'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_ppc64le_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; s390x) ESUM='e7828369bf76eb25426b807c039974f067888e1f67e9e461274407675946738e'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_s390x_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; *) echo "Unsupported arch: ${ARCH}"; exit 1; ;; esac; curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; mkdir -p /opt/java/openjdk; cd /opt/java/openjdk; tar -xf /tmp/openjdk.tar.gz --strip-components=1; rm -rf /tmp/openjdk.tar.gz; # buildkit

2026-01-15 22:42:13 UTC (buildkit.dockerfile.v0)

ENV JAVA_HOME=/opt/java/openjdk PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2026-01-15 22:42:13 UTC (buildkit.dockerfile.v0)

ENV JAVA_TOOL_OPTIONS=-XX:+IgnoreUnrecognizedVMOptions -XX:+PortableSharedCache -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal

2026-01-15 22:42:47 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; unset OPENJ9_JAVA_OPTIONS; SCC_SIZE="50m"; DOWNLOAD_PATH_TOMCAT=/tmp/tomcat; INSTALL_PATH_TOMCAT=/opt/tomcat-home; TOMCAT_CHECKSUM="fc55589f28bf6659928167461c741649b6005b64285dd81df05bb5ee40f4c6de59b8ee3af84ff756ae1513fc47f5f73070e29313b555e27f096f25881c69841d"; TOMCAT_VERSION="9.0.112"; TOMCAT_FILENAME="apache-tomcat-${TOMCAT_VERSION}.tar.gz"; SUCCESS=; mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"; for baseUrl in https://dlcdn.apache.org/tomcat/tomcat-9/v${TOMCAT_VERSION}/bin https://archive.apache.org/dist/tomcat/tomcat-9/v${TOMCAT_VERSION}/bin ; do if curl -LfsSo "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${baseUrl}/${TOMCAT_FILENAME}" && [ -s "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz ]; then SUCCESS=1; break; fi; done; [ -n "$SUCCESS" ]; echo "${TOMCAT_CHECKSUM} ${DOWNLOAD_PATH_TOMCAT}/tomcat.tar.gz" | sha512sum -c -; tar -xf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1; rm -rf "${DOWNLOAD_PATH_TOMCAT}"; java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; export OPENJ9_JAVA_OPTIONS="-XX:+IProfileDuringStartupPhase -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; sleep 5; "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh -force; sleep 15; FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); DST_CACHE=$(java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy 2>&1 || true); SCC_SIZE=$(echo $SCC_SIZE | sed 's/.$//'); SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}"); [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1; SCC_SIZE="${SCC_SIZE}m"; java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; unset OPENJ9_JAVA_OPTIONS; export OPENJ9_JAVA_OPTIONS="-XX:+IProfileDuringStartupPhase -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; sleep 5; "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh -force; sleep 5; FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); echo "SCC layer is $FULL% full."; rm -rf "${INSTALL_PATH_TOMCAT}"; if [ -d "/opt/java/.scc" ]; then chmod -R 0777 /opt/java/.scc; fi; echo "SCC generation phase completed"; # buildkit

2026-02-02 07:59:06 UTC (buildkit.dockerfile.v0)

LABEL maintainer=johnniang <[email protected]>

2026-02-02 07:59:06 UTC (buildkit.dockerfile.v0)

WORKDIR /application

2026-02-02 08:00:05 UTC (buildkit.dockerfile.v0)

COPY application/dependencies/ ./ # buildkit

2026-02-02 08:00:05 UTC (buildkit.dockerfile.v0)

COPY application/spring-boot-loader/ ./ # buildkit

2026-02-02 08:00:05 UTC (buildkit.dockerfile.v0)

COPY application/snapshot-dependencies/ ./ # buildkit

2026-02-02 08:00:06 UTC (buildkit.dockerfile.v0)

COPY application/application/ ./ # buildkit

2026-02-02 08:00:06 UTC (buildkit.dockerfile.v0)

ENV JVM_OPTS= HALO_WORK_DIR=/root/.halo2 SPRING_CONFIG_LOCATION=optional:classpath:/;optional:file:/root/.halo2/ TZ=Asia/Shanghai

2026-02-02 08:00:06 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # buildkit

2026-02-02 08:00:06 UTC (buildkit.dockerfile.v0)

EXPOSE [8090/tcp]

2026-02-02 08:00:06 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["sh" "-c" "java ${JVM_OPTS} org.springframework.boot.loader.launch.JarLauncher ${0} ${@}"]

Details
Created

2026-02-02 08:00:17 UTC

Size

247 MB

Content Digest
Labels
  • maintainer
    johnniang <[email protected]>
  • org.opencontainers.image.created
    2026-02-02T07:58:22.252Z
  • org.opencontainers.image.description
  • org.opencontainers.image.licenses
    GPL-3.0
  • org.opencontainers.image.ref.name
    ubuntu
  • org.opencontainers.image.revision
    16acd58d2196b777b31cc0883e79ea69f7e10a4f
  • org.opencontainers.image.source
    https://github.com/lxware-dev/halo-pro
  • org.opencontainers.image.title
    halo-pro
  • org.opencontainers.image.url
    https://github.com/lxware-dev/halo-pro
  • org.opencontainers.image.version
    2

Environment
HALO_WORK_DIR

/root/.halo2

JAVA_HOME

/opt/java/openjdk

JAVA_TOOL_OPTIONS

-XX:+IgnoreUnrecognizedVMOptions -XX:+PortableSharedCache -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal

JAVA_VERSION

jdk-21.0.9+10_openj9-0.56.0

JVM_OPTS

LANG

en_US.UTF-8

LANGUAGE

en_US:en

LC_ALL

en_US.UTF-8

PATH

/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

SPRING_CONFIG_LOCATION

optional:classpath:/;optional:file:/root/.halo2/

TZ

Asia/Shanghai


Layers

[#000] sha256:88318e41cf944fd93c8b2fdfaeb1378b17ed0e2440ef9811f9820449bf19a6ad - 11.55% (28.5 MB)

[#001] sha256:960e5a8a4758a7bb1786afff288a419a9926d43f49ae7f0b06153b15db8f8dbb - 5.07% (12.5 MB)

[#002] sha256:d50ab2229db133aff4207de59069c7b275852eb248e75e60bc0fcd70103a87e6 - 22.74% (56.1 MB)

[#003] sha256:793cb9e89e307842dd9064ba5011d7b6d068e347c8f09be72e3fedfef58c8389 - 2.11% (5.2 MB)

[#004] sha256:99ea3b961dad2d46faa9ee78b3e4087992bd3c96cc38dd6d2a8f278ac0e8947c - 0.0% (101 Bytes)

[#005] sha256:ec7a9b07d74ca06e05d6b263fcc126e4b5ae62350a098d70bdb7acec644a5842 - 50.86% (126 MB)

[#006] sha256:59c10c56512aa6b1c9293d26f80bd839cab184d8212f9ea16b0c327ce3d66e52 - 0.05% (130 KB)

[#007] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)

[#008] sha256:0fa5a8383d597f33207c17c7114190ceea8dc74d71f221fb3a725d6385389d52 - 7.61% (18.8 MB)

[#009] sha256:a2a6a91ef65f951b89ac557e5a8e70d9066f41c1aae9be601fea462b7dabd6b9 - 0.0% (195 Bytes)


History
2026-01-13 06:29:20 UTC

/bin/sh -c #(nop) ARG RELEASE

2026-01-13 06:29:20 UTC

/bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH

2026-01-13 06:29:20 UTC

/bin/sh -c #(nop) LABEL org.opencontainers.image.ref.name=ubuntu

2026-01-13 06:29:20 UTC

/bin/sh -c #(nop) LABEL org.opencontainers.image.version=24.04

2026-01-13 06:29:22 UTC

/bin/sh -c #(nop) ADD file:55a7874afa0094b7b4c6edc68b58164a34177fa761bc6e673ddb0c846b91f26f in /

2026-01-13 06:29:22 UTC

/bin/sh -c #(nop) CMD ["/bin/bash"]

2026-01-15 22:12:15 UTC (buildkit.dockerfile.v0)

ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8

2026-01-15 22:12:15 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata curl ca-certificates fontconfig locales && echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen && locale-gen en_US.UTF-8 && rm -rf /var/lib/apt/lists/* # buildkit

2026-01-15 22:12:15 UTC (buildkit.dockerfile.v0)

ENV JAVA_VERSION=jdk-21.0.9+10_openj9-0.56.0

2026-01-15 22:16:28 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in aarch64|arm64) ESUM='ac8c6c5aa3c345e14e82966972040b479d672c12e5cd0eaa52d8b38e6bdea40c'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_aarch64_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; amd64|x86_64) ESUM='6b3022f3d286b2fde9a964028da637a5ad9a93b1028741dcb72aa3bca49c83d2'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_x64_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; ppc64el|ppc64le) ESUM='876af8243616745796762539816cdb37c194e4b5942398277d6ccd35e96e3dcc'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_ppc64le_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; s390x) ESUM='e7828369bf76eb25426b807c039974f067888e1f67e9e461274407675946738e'; BINARY_URL='https://github.com/ibmruntimes/semeru21-binaries/releases/download/jdk-21.0.9%2B10_openj9-0.56.0/ibm-semeru-open-jre_s390x_linux_21.0.9_10_openj9-0.56.0.tar.gz'; ;; *) echo "Unsupported arch: ${ARCH}"; exit 1; ;; esac; curl -LfsSo /tmp/openjdk.tar.gz ${BINARY_URL}; echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; mkdir -p /opt/java/openjdk; cd /opt/java/openjdk; tar -xf /tmp/openjdk.tar.gz --strip-components=1; rm -rf /tmp/openjdk.tar.gz; # buildkit

2026-01-15 22:16:28 UTC (buildkit.dockerfile.v0)

ENV JAVA_HOME=/opt/java/openjdk PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

2026-01-15 22:16:28 UTC (buildkit.dockerfile.v0)

ENV JAVA_TOOL_OPTIONS=-XX:+IgnoreUnrecognizedVMOptions -XX:+PortableSharedCache -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal

2026-01-15 22:16:59 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; unset OPENJ9_JAVA_OPTIONS; SCC_SIZE="50m"; DOWNLOAD_PATH_TOMCAT=/tmp/tomcat; INSTALL_PATH_TOMCAT=/opt/tomcat-home; TOMCAT_CHECKSUM="fc55589f28bf6659928167461c741649b6005b64285dd81df05bb5ee40f4c6de59b8ee3af84ff756ae1513fc47f5f73070e29313b555e27f096f25881c69841d"; TOMCAT_VERSION="9.0.112"; TOMCAT_FILENAME="apache-tomcat-${TOMCAT_VERSION}.tar.gz"; SUCCESS=; mkdir -p "${DOWNLOAD_PATH_TOMCAT}" "${INSTALL_PATH_TOMCAT}"; for baseUrl in https://dlcdn.apache.org/tomcat/tomcat-9/v${TOMCAT_VERSION}/bin https://archive.apache.org/dist/tomcat/tomcat-9/v${TOMCAT_VERSION}/bin ; do if curl -LfsSo "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz "${baseUrl}/${TOMCAT_FILENAME}" && [ -s "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz ]; then SUCCESS=1; break; fi; done; [ -n "$SUCCESS" ]; echo "${TOMCAT_CHECKSUM} ${DOWNLOAD_PATH_TOMCAT}/tomcat.tar.gz" | sha512sum -c -; tar -xf "${DOWNLOAD_PATH_TOMCAT}"/tomcat.tar.gz -C "${INSTALL_PATH_TOMCAT}" --strip-components=1; rm -rf "${DOWNLOAD_PATH_TOMCAT}"; java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; export OPENJ9_JAVA_OPTIONS="-XX:+IProfileDuringStartupPhase -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; sleep 5; "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh -force; sleep 15; FULL=$( (java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); DST_CACHE=$(java -Xshareclasses:name=dry_run_scc,cacheDir=/opt/java/.scc,destroy 2>&1 || true); SCC_SIZE=$(echo $SCC_SIZE | sed 's/.$//'); SCC_SIZE=$(awk "BEGIN {print int($SCC_SIZE * $FULL / 100.0)}"); [ "${SCC_SIZE}" -eq 0 ] && SCC_SIZE=1; SCC_SIZE="${SCC_SIZE}m"; java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal,createLayer -Xscmx$SCC_SIZE -version; unset OPENJ9_JAVA_OPTIONS; export OPENJ9_JAVA_OPTIONS="-XX:+IProfileDuringStartupPhase -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,bootClassesOnly,nonFatal"; "${INSTALL_PATH_TOMCAT}"/bin/startup.sh; sleep 5; "${INSTALL_PATH_TOMCAT}"/bin/shutdown.sh -force; sleep 5; FULL=$( (java -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,printallStats 2>&1 || true) | awk '/^Cache is [0-9.]*% .*full/ {print substr($3, 1, length($3)-1)}'); echo "SCC layer is $FULL% full."; rm -rf "${INSTALL_PATH_TOMCAT}"; if [ -d "/opt/java/.scc" ]; then chmod -R 0777 /opt/java/.scc; fi; echo "SCC generation phase completed"; # buildkit

2026-02-02 07:59:06 UTC (buildkit.dockerfile.v0)

LABEL maintainer=johnniang <[email protected]>

2026-02-02 07:59:06 UTC (buildkit.dockerfile.v0)

WORKDIR /application

2026-02-02 08:00:15 UTC (buildkit.dockerfile.v0)

COPY application/dependencies/ ./ # buildkit

2026-02-02 08:00:16 UTC (buildkit.dockerfile.v0)

COPY application/spring-boot-loader/ ./ # buildkit

2026-02-02 08:00:16 UTC (buildkit.dockerfile.v0)

COPY application/snapshot-dependencies/ ./ # buildkit

2026-02-02 08:00:16 UTC (buildkit.dockerfile.v0)

COPY application/application/ ./ # buildkit

2026-02-02 08:00:16 UTC (buildkit.dockerfile.v0)

ENV JVM_OPTS= HALO_WORK_DIR=/root/.halo2 SPRING_CONFIG_LOCATION=optional:classpath:/;optional:file:/root/.halo2/ TZ=Asia/Shanghai

2026-02-02 08:00:17 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # buildkit

2026-02-02 08:00:17 UTC (buildkit.dockerfile.v0)

EXPOSE [8090/tcp]

2026-02-02 08:00:17 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["sh" "-c" "java ${JVM_OPTS} org.springframework.boot.loader.launch.JarLauncher ${0} ${@}"]