putki-web (sha256:a85f3053452e18514d28001f6e996c53cf739fe4feb3c45db3ac9c19488a0235)
Published 2026-09-05 12:11:41 +00:00 by ci-bot
Installation
docker pull forge.putki.io/putki-hop/putki-web@sha256:a85f3053452e18514d28001f6e996c53cf739fe4feb3c45db3ac9c19488a0235sha256:a85f3053452e18514d28001f6e996c53cf739fe4feb3c45db3ac9c19488a0235Image layers
| ARG RELEASE |
| ARG LAUNCHPAD_BUILD_ARCH |
| LABEL org.opencontainers.image.version=24.04 |
| ADD file:0387b3d029de8fa08641ccfaa44c6a4ad07b93035420d53b49783ea27527d153 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.12+8 |
| RUN /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in amd64) ESUM='e4446ff06a276155697597cc0f1b15da004ff083f4964a35271ecee567177370'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.12%2B8/OpenJDK21U-jdk_x64_linux_hotspot_21.0.12_8.tar.gz'; ;; arm64) ESUM='eba38e871b02d407897bfe017ea35352dfc1420ef6d2112425b0c67325ca509d'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.12%2B8/OpenJDK21U-jdk_aarch64_linux_hotspot_21.0.12_8.tar.gz'; ;; ppc64el) ESUM='082dac6781cd86c1c1903608b8f354c6dc453313d81881a1e87b9a22663ac5ca'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.12%2B8/OpenJDK21U-jdk_ppc64le_linux_hotspot_21.0.12_8.tar.gz'; ;; riscv64) ESUM='86f836b5a94b3354f236b72339d04418fea178c41624637dd94e510f6597c372'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.12%2B8/OpenJDK21U-jdk_riscv64_linux_hotspot_21.0.12_8.tar.gz'; ;; s390x) ESUM='2a57a86afa2e461757acc6c2bd198a3fdae4393d8d37fd66b6244e713c3c42ea'; BINARY_URL='https://github.com/adoptium/temurin21-binaries/releases/download/jdk-21.0.12%2B8/OpenJDK21U-jdk_s390x_linux_hotspot_21.0.12_8.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.59 |
| ENV TOMCAT_SHA512=992a8e88fc9c0338445f018a1e4a2757c9e71708dba795e2864c9b1613f2b3b9b19c048e787682deae6d6bff9971defc746e31282085d52ef1d32192e09f7a0f |
| 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"] |
| ARG HOP_UID=501 |
| ARG HOP_GID=501 |
| 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 |
| RUN |2 HOP_UID=501 HOP_GID=501 /bin/sh -c groupadd -r putki -g ${HOP_GID} && useradd -d /home/putki -u ${HOP_UID} -m -s /bin/bash -g putki putki && rm -rf webapps/* && mkdir -p /usr/local/tomcat/webapps/ROOT && mkdir -p /usr/local/tomcat/webapps/ROOT/audit && mkdir -p /usr/local/tomcat/config && mkdir -p /usr/local/tomcat/audit && mkdir -p /usr/local/tomcat/logs && chown -R putki:putki /usr/local/tomcat && chown -R putki:putki /home/putki # buildkit |
| USER putki |
| ENV DEPLOYMENT_PATH=/usr/local/tomcat/webapps/ROOT |
| ENV HOP_AES_ENCODER_KEY= |
| 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=/usr/local/tomcat/plugins |
| ENV HOP_SHARED_JDBC_FOLDERS=/usr/local/tomcat/jdbc-drivers |
| ENV HOP_WEB_THEME=light |
| ENV HOP_GUI_ZOOM_FACTOR=1.0 |
| ENV HOP_PROJECT_FOLDER= |
| ENV HOP_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_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 /build/putki-web-prepared/ /usr/local/tomcat # buildkit |
| 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 |
| USER root |
| 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 |
| USER root |
| 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 |
|---|---|
| org.opencontainers.image.version | 24.04 |
Details
2026-09-05 12:11:41 +00:00
Versions (2)
View all
Container
0
OCI / Docker
linux/arm64
728 MiB
2026.09-snapshot
2026-09-05
development
2026-09-05