putki-web (sha256:3a71c89a9415ee56a6905f91e14dc99bfc3c68294b468cd0670c0a96eb50104a)

Published 2026-10-28 05:55:53 +00:00 by ci-bot

Installation

docker pull forge.putki.io/putki-hop/putki-web@sha256:3a71c89a9415ee56a6905f91e14dc99bfc3c68294b468cd0670c0a96eb50104a
sha256:3a71c89a9415ee56a6905f91e14dc99bfc3c68294b468cd0670c0a96eb50104a

About this package

The Ubuntu container image maintained by Canonical Ubuntu is a Debian-based Linux operating system that runs from the desktop to the cloud, to all your internet connected things. It is the world's most popular operating system across public clouds and OpenStack clouds. It is the number one platform for containers; from Docker to Kubernetes to LXD, Ubuntu can run your containers at scale. Fast, secure and simple, Ubuntu powers millions of PCs worldwide.

Image layers

umoci raw add-layer --image /home/buildd/rockcraft-ubuntu-cc003627bc5bab71b42ff0f8e1a41f88/images/ubuntu:rockcraft-base /home/buildd/rockcraft-ubuntu-cc003627bc5bab71b42ff0f8e1a41f88/images/.temp_layer.9649.tar --tag 26.04
umoci config --image /home/buildd/rockcraft-ubuntu-cc003627bc5bab71b42ff0f8e1a41f88/images/ubuntu:26.04 --clear=config.entrypoint --clear=config.cmd
umoci config --image /home/buildd/rockcraft-ubuntu-cc003627bc5bab71b42ff0f8e1a41f88/images/ubuntu:26.04 --clear=config.cmd --config.cmd /bin/bash
umoci config --image /home/buildd/rockcraft-ubuntu-cc003627bc5bab71b42ff0f8e1a41f88/images/ubuntu:26.04 --config.env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
umoci config --image /home/buildd/rockcraft-ubuntu-cc003627bc5bab71b42ff0f8e1a41f88/images/ubuntu:26.04 --clear=config.labels --config.label org.opencontainers.image.version=26.04 --config.label org.opencontainers.image.title=ubuntu --config.label org.opencontainers.image.created=2026-10-25T10:30:32.309136+00:00 --config.label org.opencontainers.image.description=The Ubuntu container image maintained by Canonical Ubuntu is a Debian-based Linux operating system that runs from the desktop to the cloud, to all your internet connected things. It is the world's most popular operating system across public clouds and OpenStack clouds. It is the number one platform for containers; from Docker to Kubernetes to LXD, Ubuntu can run your containers at scale. Fast, secure and simple, Ubuntu powers millions of PCs worldwide.
umoci config --image /home/buildd/rockcraft-ubuntu-cc003627bc5bab71b42ff0f8e1a41f88/images/ubuntu:26.04 --clear=manifest.annotations --manifest.annotation org.opencontainers.image.version=26.04 --manifest.annotation org.opencontainers.image.title=ubuntu --manifest.annotation org.opencontainers.image.created=2026-10-25T10:30:32.309136+00:00 --manifest.annotation org.opencontainers.image.description=The Ubuntu container image maintained by Canonical Ubuntu is a Debian-based Linux operating system that runs from the desktop to the cloud, to all your internet connected things. It is the world's most popular operating system across public clouds and OpenStack clouds. It is the number one platform for containers; from Docker to Kubernetes to LXD, Ubuntu can run your containers at scale. Fast, secure and simple, Ubuntu powers millions of PCs worldwide.
umoci raw add-layer --image /home/buildd/rockcraft-ubuntu-cc003627bc5bab71b42ff0f8e1a41f88/images/ubuntu:26.04 /home/buildd/rockcraft-ubuntu-cc003627bc5bab71b42ff0f8e1a41f88/images/.temp_layer.control_data.9649.tar
ENV JAVA_HOME=/opt/java/openjdk
ENV PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8
RUN /bin/sh -c set -eux; apt-get update; DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends curl wget gnupg fontconfig ca-certificates p11-kit binutils tzdata locales ; echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; locale-gen en_US.UTF-8; rm -rf /var/lib/apt/lists/* # buildkit
ENV JAVA_VERSION=jdk-21.0.12.1+1
RUN /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in amd64) ESUM='ce79869e1307ed8ee1e2baa86a412b1eb5b75d10a01006d788a6f968bcfaee94'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.12.1%2B1/OpenJDK21U-jdk_x64_linux_hotspot_21.0.12.1_1.tar.gz'; ;; arm64) ESUM='23e37e026f12f3e706f18938ff611db3032d075b09d0879a25d06718c773e223'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.12.1%2B1/OpenJDK21U-jdk_aarch64_linux_hotspot_21.0.12.1_1.tar.gz'; ;; ppc64el) ESUM='042482fa372f12741ceb721397e277b4e69672182aaa45a1bf7af55d9ba876d6'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.12.1%2B1/OpenJDK21U-jdk_ppc64le_linux_hotspot_21.0.12.1_1.tar.gz'; ;; s390x) ESUM='806bb29b0d408eb6312cda0a1e756bc91e554ef9ed6a5863f6004e502f6c789a'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.12.1%2B1/OpenJDK21U-jdk_s390x_linux_hotspot_21.0.12.1_1.tar.gz'; ;; *) echo "Unsupported arch: ${ARCH}"; exit 1; ;; esac; wget --progress=dot:giga -O /tmp/openjdk.tar.gz ${BINARY_URL}; wget --progress=dot:giga -O /tmp/openjdk.tar.gz.sig ${BINARY_URL}.sig; export GNUPGHOME="$(mktemp -d)"; gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 3B04D753C9050D9A5D343F39843C48A565F8F04B; gpg --batch --verify /tmp/openjdk.tar.gz.sig /tmp/openjdk.tar.gz; rm -rf "${GNUPGHOME}" /tmp/openjdk.tar.gz.sig; echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; mkdir -p "$JAVA_HOME"; tar --extract --file /tmp/openjdk.tar.gz --directory "$JAVA_HOME" --strip-components 1 --no-same-owner ; rm -f /tmp/openjdk.tar.gz ${JAVA_HOME}/lib/src.zip; find "$JAVA_HOME/lib" -name '*.so' -exec dirname '{}' ';' | sort -u > /etc/ld.so.conf.d/docker-openjdk.conf; ldconfig; java -Xshare:dump; # buildkit
RUN /bin/sh -c set -eux; echo "Verifying install ..."; fileEncoding="$(echo 'System.out.println(System.getProperty("file.encoding"))' | jshell -s -)"; [ "$fileEncoding" = 'UTF-8' ]; rm -rf ~/.java; echo "javac --version"; javac --version; echo "java --version"; java --version; echo "Complete." # buildkit
COPY --chmod=755 entrypoint.sh /__cacert_entrypoint.sh # buildkit
ENTRYPOINT ["/__cacert_entrypoint.sh"]
CMD ["jshell"]
ENV CATALINA_HOME=/usr/local/tomcat
ENV PATH=/usr/local/tomcat/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN /bin/sh -c mkdir -p "$CATALINA_HOME" # buildkit
WORKDIR /usr/local/tomcat
ENV TOMCAT_NATIVE_LIBDIR=/usr/local/tomcat/native-jni-lib
ENV LD_LIBRARY_PATH=/usr/local/tomcat/native-jni-lib
ENV TOMCAT_MAJOR=10
ENV TOMCAT_VERSION=10.1.61
ENV TOMCAT_SHA512=35120a2b1182bac3d55438fbec0dc581d03b0f1c16ce692a930f3bb6a1097cf896b94b389152257071a87cb2928ac8c15f1bad08387c14acc7c17dbc1bb598fb
RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends ca-certificates curl gnupg ; ddist() { local f="$1"; shift; local distFile="$1"; shift; local mvnFile="${1:-}"; local success=; local distUrl=; for distUrl in "https://dlcdn.apache.org/$distFile" "https://archive.apache.org/dist/$distFile" ${mvnFile:+"https://repo1.maven.org/maven2/org/apache/tomcat/tomcat/$mvnFile"} ; do if curl -fL -o "$f" "$distUrl" && [ -s "$f" ]; then success=1; break; fi; done; [ -n "$success" ]; }; ddist 'tomcat.tar.gz' "tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz" "$TOMCAT_VERSION/tomcat-$TOMCAT_VERSION.tar.gz"; echo "$TOMCAT_SHA512 *tomcat.tar.gz" | sha512sum --strict --check -; ddist 'tomcat.tar.gz.asc' "tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz.asc" "$TOMCAT_VERSION/tomcat-$TOMCAT_VERSION.tar.gz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; curl -fL -o upstream-KEYS 'https://www.apache.org/dist/tomcat/tomcat-10/KEYS'; gpg --batch --import upstream-KEYS; printf '' > filtered-KEYS; for key in 'A9C5DF4D22E99998D9875A5110C01C5A2F6059E7' '5C3C5F3E314C866292F359A8F3AD5C94A67F707E' ; do gpg --batch --fingerprint "$key"; gpg --batch --export --armor "$key" >> filtered-KEYS; done; gpgconf --kill all; rm -rf "$GNUPGHOME"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --import filtered-KEYS; gpg --batch --verify tomcat.tar.gz.asc tomcat.tar.gz; tar -xf tomcat.tar.gz --strip-components=1; rm bin/*.bat; rm tomcat.tar.gz*; gpgconf --kill all; rm -rf "$GNUPGHOME"; mv webapps webapps.dist; mkdir webapps; nativeBuildDir="$(mktemp -d)"; tar -xf bin/tomcat-native.tar.gz -C "$nativeBuildDir" --strip-components=1; apt-get install -y --no-install-recommends dpkg-dev gcc libapr1-dev libssl-dev make ; ( export CATALINA_HOME="$PWD"; cd "$nativeBuildDir/native"; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; aprConfig="$(command -v apr-1-config)"; ./configure --build="$gnuArch" --libdir="$TOMCAT_NATIVE_LIBDIR" --prefix="$CATALINA_HOME" --with-apr="$aprConfig" --with-java-home="$JAVA_HOME" ; nproc="$(nproc)"; make -j "$nproc"; make install; ); rm -rf "$nativeBuildDir"; rm bin/tomcat-native.tar.gz; apt-mark auto '.*' > /dev/null; [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; find "$TOMCAT_NATIVE_LIBDIR" -type f -executable -exec ldd '{}' ';' | awk '/=>/ { print $(NF-1) }' | xargs -rt readlink -e | sort -u | xargs -rt dpkg-query --search | cut -d: -f1 | sort -u | tee "$TOMCAT_NATIVE_LIBDIR/.dependencies.txt" | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; rm -rf /var/lib/apt/lists/*; find ./bin/ -name '*.sh' -exec sed -ri 's|^#!/bin/sh$|#!/usr/bin/env bash|' '{}' +; chmod -R +rX .; chmod 1777 logs temp work; catalina.sh version # buildkit
RUN /bin/sh -c set -eux; nativeLines="$(catalina.sh configtest 2>&1)"; nativeLines="$(echo "$nativeLines" | grep 'Apache Tomcat Native')"; nativeLines="$(echo "$nativeLines" | sort -u)"; if ! echo "$nativeLines" | grep -E 'INFO: Loaded( APR based)? Apache Tomcat Native library' >&2; then echo >&2 "$nativeLines"; exit 1; fi # buildkit
EXPOSE map[8080/tcp:{}]
ENTRYPOINT []
CMD ["catalina.sh" "run"]
LABEL maintainer=Apache Hop Team
ARG HOP_UID=501
ARG HOP_GID=501
ENV DEPLOYMENT_PATH=/usr/local/tomcat/webapps/ROOT
ENV HOP_AES_ENCODER_KEY=
ENV HOP_AES_ENCODER_KEY_FILE=
ENV HOP_AUDIT_FOLDER=/tmp/hop-web-audit
ENV HOP_CONFIG_FOLDER=/usr/local/tomcat/webapps/ROOT/config
ENV HOP_LOG_LEVEL=Basic
ENV HOP_OPTIONS=-XX:+AggressiveHeap
ENV HOP_PASSWORD_ENCODER_PLUGIN=Hop
ENV HOP_PLUGIN_BASE_FOLDERS=plugins
ENV HOP_SHARED_JDBC_FOLDERS=/usr/local/tomcat/jdbc-drivers
ENV HOP_GUI_ZOOM_FACTOR=1.0
ENV HOP_PROJECT_FOLDER=
ENV HOP_PROJECT_CONFIG_FILE_NAME=project-config.json
ENV HOP_PARENT_PROJECT_NAME=
ENV HOP_PARENT_PROJECT_FOLDER=
ENV HOP_PARENT_PROJECT_CONFIG_FILE_NAME=project-config.json
ENV HOP_ENVIRONMENT_NAME=environment1
ENV HOP_ENVIRONMENT_CONFIG_FILE_NAME_PATHS=
ENV CATALINA_OPTS=${HOP_OPTIONS} -DHOP_AES_ENCODER_KEY="${HOP_AES_ENCODER_KEY}" -DHOP_AES_ENCODER_KEY_FILE="${HOP_AES_ENCODER_KEY_FILE}" -DHOP_AUDIT_FOLDER="${HOP_AUDIT_FOLDER}" -DHOP_CONFIG_FOLDER="${HOP_CONFIG_FOLDER}" -DHOP_LOG_LEVEL="${HOP_LOG_LEVEL}" -DHOP_PASSWORD_ENCODER_PLUGIN="${HOP_PASSWORD_ENCODER_PLUGIN}" -DHOP_PLUGIN_BASE_FOLDERS="${HOP_PLUGIN_BASE_FOLDERS}" -DHOP_SHARED_JDBC_FOLDERS="${HOP_SHARED_JDBC_FOLDERS}" -DHOP_GUI_ZOOM_FACTOR="${HOP_GUI_ZOOM_FACTOR}"
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c apt-get update && apt-get install -y --no-install-recommends fonts-noto-cjk && rm -rf /var/lib/apt/lists/* && groupadd -r hop -g ${HOP_GID} && useradd -d /home/hop -u ${HOP_UID} -m -s /bin/bash -g hop hop && rm -rf webapps/* && mkdir "${CATALINA_HOME}"/webapps/ROOT && mkdir -p "${HOP_AUDIT_FOLDER}" && chown hop:hop "${HOP_AUDIT_FOLDER}" # buildkit
COPY ./assemblies/web/target/webapp/ /usr/local/tomcat/webapps/ROOT/ # buildkit
COPY ./assemblies/client/target/hop/config /usr/local/tomcat/webapps/ROOT/config # buildkit
COPY ./assemblies/client/target/hop/lib/core /usr/local/tomcat/webapps/ROOT/WEB-INF/lib # buildkit
COPY ./assemblies/client/target/hop/plugins /usr/local/tomcat/plugins # buildkit
COPY ./assemblies/client/target/hop/lib/jdbc/ /usr/local/tomcat/jdbc-drivers # buildkit
COPY --chown=hop ./docker/resources/run-web.sh /tmp/ # buildkit
COPY ./docker/resources/server.xml /usr/local/tomcat/conf/server.xml # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c rm -f "${CATALINA_HOME}"/webapps/ROOT/WEB-INF/lib/hop-ui-rcp-*.jar # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c sed -i 's/config\/projects/${HOP_CONFIG_FOLDER}\/projects/g' "${CATALINA_HOME}"/webapps/ROOT/config/hop-config.json # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c mkdir -p "$CATALINA_HOME"/lib/swt/linux/x86_64 # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c sed -i 's&lib/core/*&../../lib/*:WEB-INF/lib/*:lib/core/*&g' ${CATALINA_HOME}/webapps/ROOT/hop # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c sed -i 's&lib/core/*&../../lib/*:WEB-INF/lib/*:lib/core/*&g' ${CATALINA_HOME}/webapps/ROOT/hop-run.sh # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c sed -i 's&lib/core/*&../../lib/*:WEB-INF/lib/*:lib/core/*&g' ${CATALINA_HOME}/webapps/ROOT/hop-conf.sh # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c sed -i 's&lib/core/*&../../lib/*:WEB-INF/lib/*:lib/core/*&g' ${CATALINA_HOME}/webapps/ROOT/hop-search.sh # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c sed -i 's&lib/core/*&../../lib/*:WEB-INF/lib/*:lib/core/*&g' ${CATALINA_HOME}/webapps/ROOT/hop-encrypt.sh # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c sed -i 's&lib/core/*&../../lib/*:WEB-INF/lib/*:lib/core/*&g' ${CATALINA_HOME}/webapps/ROOT/hop-import.sh # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c sed -i 's&lib/core/*&../../lib/*:WEB-INF/lib/*:lib/core/*&g' ${CATALINA_HOME}/webapps/ROOT/hop-search.sh # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c chmod +x ${CATALINA_HOME}/webapps/ROOT/*.sh # buildkit
ENV HOP_PLUGIN_BASE_FOLDERS=/usr/local/tomcat/plugins
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c chown -R hop:hop /usr/local/tomcat # buildkit
USER hop
CMD ["/bin/bash" "/tmp/run-web.sh"]
ARG HOP_UID=501
ARG HOP_GID=501
USER root
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c groupmod -n putki hop && usermod -l putki -d /home/putki -m hop && mkdir -p /usr/local/tomcat/config /usr/local/tomcat/audit /usr/local/tomcat/logs /usr/local/tomcat/webapps/ROOT/audit # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c apt-get -o Acquire::Retries=3 update && apt-get -o Acquire::Retries=3 install -y --no-install-recommends gosu jq postgresql-client curl ca-certificates && apt-get -o Acquire::Retries=3 install -y --only-upgrade libssl3t64 openssl && curl -fsSL "https://jdbc.postgresql.org/download/postgresql-42.7.2.jar" -o /usr/local/tomcat/lib/postgresql-jdbc.jar && rm -rf /var/lib/apt/lists/* # buildkit
COPY --chown=putki:putki /build/putki-plugin-overlay/plugins/ /usr/local/tomcat/plugins/ # buildkit
COPY --chown=putki:putki /build/putki-plugin-overlay/jdbc-drivers/ /usr/local/tomcat/jdbc-drivers/ # buildkit
COPY --chown=putki:putki /build/putki-plugin-overlay/lib/ /usr/local/tomcat/webapps/ROOT/WEB-INF/lib/ # buildkit
COPY --chown=putki:putki docker/resources/run-web.sh /usr/local/tomcat/bin/run-web.sh # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c chmod +x /usr/local/tomcat/bin/run-web.sh # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c cd /usr/local/tomcat/webapps/ROOT && for s in conf run search encrypt import server; do if [ -f "hop-$s.sh" ]; then ln -sf "hop-$s.sh" "putki-$s.sh"; fi; done && chmod +x hop-*.sh && chown -h putki:putki putki-*.sh && test -L putki-conf.sh || { echo "BRANDING FAILED: putki-conf.sh link not created" >&2; exit 1; } # buildkit
COPY docker/putki-web/logos/logo_icon.svg docker/putki-web/config/head.html /tmp/putki-branding/ # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c set -eu; LIB=/usr/local/tomcat/webapps/ROOT/WEB-INF/lib; mkdir -p /tmp/brand-ui/ui/images /tmp/brand-rap /tmp/brand-verify; cp /tmp/putki-branding/logo_icon.svg /tmp/brand-ui/ui/images/logo_icon.svg; cp /tmp/putki-branding/logo_icon.svg /tmp/brand-ui/ui/images/logo_hop.svg; cp /tmp/putki-branding/logo_icon.svg /tmp/brand-ui/ui/images/logo_bw.svg; cp /tmp/putki-branding/head.html /tmp/brand-rap/head.html; HOP_UI_JAR=$(ls $LIB/hop-ui-[0-9]*.jar 2>/dev/null | head -1 || true); if [ -n "$HOP_UI_JAR" ]; then jar uf "$HOP_UI_JAR" -C /tmp/brand-ui ui/images/logo_icon.svg; ( cd /tmp/brand-verify && jar xf "$HOP_UI_JAR" ui/images/logo_icon.svg ); cmp -s /tmp/brand-verify/ui/images/logo_icon.svg /tmp/putki-branding/logo_icon.svg || { echo "BRANDING FAILED: logo not replaced in $HOP_UI_JAR" >&2; exit 1; }; else echo "BRANDING NOTE: no base hop-ui-*.jar under WEB-INF/lib; skipping SWT logo branding" >&2; fi; HOP_RAP_JAR=$(ls $LIB/hop-ui-rap-*.jar 2>/dev/null | head -1 || true); [ -n "$HOP_RAP_JAR" ] || { echo "BRANDING FAILED: no hop-ui-rap-*.jar under WEB-INF/lib" >&2; exit 1; }; jar uf "$HOP_RAP_JAR" -C /tmp/brand-rap head.html; ( cd /tmp/brand-verify && jar xf "$HOP_RAP_JAR" head.html ); cmp -s /tmp/brand-verify/head.html /tmp/putki-branding/head.html || { echo "BRANDING FAILED: head.html not injected into $HOP_RAP_JAR" >&2; exit 1; }; ROOT=/usr/local/tomcat/webapps/ROOT; mkdir -p "$ROOT/static/images" "$ROOT/ui/images"; cp /tmp/putki-branding/logo_icon.svg "$ROOT/static/images/favicon.svg"; cp /tmp/putki-branding/logo_icon.svg "$ROOT/ui/images/logo_icon.svg"; cp /tmp/putki-branding/logo_icon.svg "$ROOT/ui/images/logo_hop.svg"; rm -rf /tmp/putki-branding /tmp/brand-ui /tmp/brand-rap /tmp/brand-verify # buildkit
ENV HOP_WEB_THEME=light
ENV CATALINA_OPTS=${HOP_OPTIONS} -DHOP_AES_ENCODER_KEY="${HOP_AES_ENCODER_KEY}" -DHOP_AUDIT_FOLDER="${HOP_AUDIT_FOLDER}" -DHOP_CONFIG_FOLDER="${HOP_CONFIG_FOLDER}" -DHOP_LOG_LEVEL="${HOP_LOG_LEVEL}" -DHOP_PASSWORD_ENCODER_PLUGIN="${HOP_PASSWORD_ENCODER_PLUGIN}" -DHOP_PLUGIN_BASE_FOLDERS="${HOP_PLUGIN_BASE_FOLDERS}" -DHOP_SHARED_JDBC_FOLDERS="${HOP_SHARED_JDBC_FOLDERS}" -DHOP_WEB_THEME="${HOP_WEB_THEME}" -DHOP_GUI_ZOOM_FACTOR="${HOP_GUI_ZOOM_FACTOR}"
COPY --chown=putki:putki docker/putki-web/config/entrypoint.sh /usr/local/bin/entrypoint.sh # buildkit
COPY --chown=putki:putki docker/neo4j/configure-neo4j-execution-logging.sh /usr/local/bin/configure-neo4j-execution-logging.sh # buildkit
COPY --chown=putki:putki docker/putki-web/config/register-projects-registry.sh /usr/local/bin/register-projects-registry.sh # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c chmod +x /usr/local/bin/entrypoint.sh /usr/local/bin/configure-neo4j-execution-logging.sh /usr/local/bin/register-projects-registry.sh # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c set -eu; WEB_XML=/usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml; [ -f "$WEB_XML" ] || { echo "WEB.XML CHECK FAILED: $WEB_XML is missing" >&2; exit 1; }; for c in org.apache.hop.ui.hopgui.security.HopOidcAuthFilter org.apache.hop.ui.hopgui.security.HopBasicAuthFilter org.apache.hop.ui.hopgui.security.HopServerAuthorizationFilter org.apache.hop.www.CrossSiteRequestFilter org.apache.hop.ui.hopgui.explorer.ExplorerFileServlet org.apache.hop.www.HopServerServlet; do grep -q "$c" "$WEB_XML" || { echo "WEB.XML CHECK FAILED: $c is not declared in the shipped web.xml." >&2; echo " Either Apache moved it, or something is overwriting the descriptor again." >&2; echo " Do not 'fix' this by copying a Putki web.xml back in — that is the bug." >&2; exit 1; }; done; echo "web.xml carries Hop's four filters and both servlets" # buildkit
COPY --chown=putki:putki /jars/hop-ui-rap-*.jar /usr/local/tomcat/webapps/ROOT/WEB-INF/lib/ # buildkit
COPY --chown=putki:putki /jars/hop-ui-*.jar /usr/local/tomcat/webapps/ROOT/WEB-INF/lib/ # buildkit
COPY --chown=putki:putki docker/putki-web/config/configure-hop-security.sh /usr/local/bin/configure-hop-security.sh # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c chmod +x /usr/local/bin/configure-hop-security.sh # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c set -eu; LIB=/usr/local/tomcat/webapps/ROOT/WEB-INF/lib; for j in 'flink-shaded-zookeeper-3-*.jar' 'zookeeper-[0-9]*.jar' 'zookeeper-jute-*.jar'; do set -- $LIB/$j; [ -f "$1" ] || { echo "STRIP FAILED: expected $LIB/$j" >&2; exit 1; }; rm -f "$@"; done; rm -rf /usr/local/tomcat/plugins/engines/beam /usr/local/tomcat/plugins/engines/spark; left=$(find /usr/local/tomcat -iname '*zookeeper*.jar' 2>/dev/null || true); [ -z "$left" ] || { echo "STRIP FAILED: zookeeper jars remain: $left" >&2; exit 1; } # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c chown -R putki:putki /usr/local/tomcat && chown -R putki:putki /home/putki # buildkit
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["/bin/sh" "-c" "bash -c \"$CATALINA_HOME/bin/run-web.sh\""]

Labels

Key Value
maintainer Apache Hop Team
org.opencontainers.image.created 2026-10-25T10:30:32.309136+00:00
org.opencontainers.image.description The Ubuntu container image maintained by Canonical Ubuntu is a Debian-based Linux operating system that runs from the desktop to the cloud, to all your internet connected things. It is the world's most popular operating system across public clouds and OpenStack clouds. It is the number one platform for containers; from Docker to Kubernetes to LXD, Ubuntu can run your containers at scale. Fast, secure and simple, Ubuntu powers millions of PCs worldwide.
org.opencontainers.image.title ubuntu
org.opencontainers.image.version 26.04
Details
Container
2026-10-28 05:55:53 +00:00
0
OCI / Docker
linux/arm64
3.3 GiB
Versions (3) View all
2026.12-snapshot 2026-10-28
development 2026-10-28
2026.09-snapshot 2026-09-17