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:3a71c89a9415ee56a6905f91e14dc99bfc3c68294b468cd0670c0a96eb50104asha256:3a71c89a9415ee56a6905f91e14dc99bfc3c68294b468cd0670c0a96eb50104aAbout 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
2026-10-28 05:55:53 +00:00
Versions (3)
View all
Container
0
OCI / Docker
linux/arm64
3.3 GiB