putki-web (sha256:77e653f13a84d5a77b24171e96a5d1d93fbd9f082a56fabb53bb6bc0ada31dc9)

Published 2026-09-17 07:54:56 +00:00 by ci-bot

Installation

docker pull forge.putki.io/putki-hop/putki-web@sha256:77e653f13a84d5a77b24171e96a5d1d93fbd9f082a56fabb53bb6bc0ada31dc9
sha256:77e653f13a84d5a77b24171e96a5d1d93fbd9f082a56fabb53bb6bc0ada31dc9

Image layers

ARG RELEASE
ARG LAUNCHPAD_BUILD_ARCH
LABEL org.opencontainers.image.version=24.04
ADD file:d938ff3d4eee15d8600de84bf85eac6ecd0f20bc92dfe305dafbff0bdc974c0f in /
CMD ["/bin/bash"]
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.11+10
RUN /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in amd64) ESUM='4b2220e232a97997b436ca6ab15cbf70171ecff52958a46159dfa5a8c44ca4de'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.11%2B10/OpenJDK21U-jdk_x64_linux_hotspot_21.0.11_10.tar.gz'; ;; arm64) ESUM='8d498ec88e1c1989fab95c6784240ab92d011e29c54d20a3f9c324b13476f9ad'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.11%2B10/OpenJDK21U-jdk_aarch64_linux_hotspot_21.0.11_10.tar.gz'; ;; ppc64el) ESUM='3d043ae96d2343962bf2307d8c55f19849fbfa4c6be9fe164a77d79263f0d989'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.11%2B10/OpenJDK21U-jdk_ppc64le_linux_hotspot_21.0.11_10.tar.gz'; ;; riscv64) ESUM='40c6862e6aff63fe9a03856ba0506531b516a17bdb5018464e9006ea7f0f5fe4'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.11%2B10/OpenJDK21U-jdk_riscv64_linux_hotspot_21.0.11_10.tar.gz'; ;; s390x) ESUM='14dbe3cb226e64b945a36bea32686e8deec746504fe3ccee8de585c54af41ffd'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.11%2B10/OpenJDK21U-jdk_s390x_linux_hotspot_21.0.11_10.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.57
ENV TOMCAT_SHA512=2fa1866ec647d4222b07ea937a4cc266adee219a1a8870107e72fc2349248dd1e32b157fa18108451f4c6e3b162f0fdfbdd11dd7855d4e49a2f0f609004a77f3
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=/usr/local/tomcat/webapps/ROOT/audit
ENV HOP_CONFIG_FOLDER=/usr/local/tomcat/webapps/ROOT/config
ENV HOP_LOG_LEVEL=Basic
ENV HOP_OPTIONS=-XX:+AggressiveHeap -Dorg.eclipse.rap.rwt.resourceLocation=/tmp/rwt-resources
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 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 "${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
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-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
COPY --chown=putki:putki docker/putki-web/config/web.xml /usr/local/tomcat/webapps/ROOT/WEB-INF/web.xml # buildkit
COPY --chown=putki:putki docker/putki-web/config/web-no-auth.xml /usr/local/tomcat/webapps/ROOT/WEB-INF/web-no-auth.xml # buildkit
COPY --chown=putki:putki docker/putki-web/config/server.xml /usr/local/tomcat/conf/server.xml # buildkit
COPY --chown=putki:putki docker/putki-web/config/server-no-auth.xml /usr/local/tomcat/conf/server-no-auth.xml # buildkit
COPY --chown=putki:putki docker/putki-web/config/login.html /usr/local/tomcat/webapps/ROOT/login.html # buildkit
COPY --chown=putki:putki docker/putki-web/config/login-error.html /usr/local/tomcat/webapps/ROOT/login-error.html # buildkit
COPY --chown=putki:putki docker/putki-web/config/login.css /usr/local/tomcat/webapps/ROOT/login.css # buildkit
COPY --chown=putki:putki docker/putki-web/config/j_security_check.jsp /usr/local/tomcat/webapps/ROOT/j_security_check.jsp # buildkit
COPY --chown=putki:putki docker/putki-web/config/logo.svg /usr/local/tomcat/webapps/ROOT/logo.svg # buildkit
COPY docker/putki-web/java/org/putki/web/FormLoginRedirectFilter.java /tmp/putki-filter-src/org/putki/web/ # buildkit
RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c mkdir -p /usr/local/tomcat/webapps/ROOT/WEB-INF/classes && SERVLET_API="$(ls /usr/local/tomcat/lib/servlet-api.jar /usr/local/tomcat/lib/jakarta.servlet-api*.jar 2>/dev/null | head -1)" && javac -classpath "${SERVLET_API}" -d /usr/local/tomcat/webapps/ROOT/WEB-INF/classes /tmp/putki-filter-src/org/putki/web/FormLoginRedirectFilter.java && rm -rf /tmp/putki-filter-src # 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-3.7.1-17.0.jar zookeeper-3.6.3.jar zookeeper-jute-3.6.3.jar; do [ -f "$LIB/$j" ] || { echo "STRIP FAILED: expected $LIB/$j" >&2; exit 1; }; rm -f "$LIB/$j"; 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.version 24.04
Details
Container
2026-09-17 07:54:56 +00:00
0
OCI / Docker
linux/amd64
2.9 GiB
Versions (3) View all
2026.12-snapshot 2026-10-28
development 2026-10-28
2026.09-snapshot 2026-09-17