Namespace
frooodle
Image / Tag
s-pdf:3.3.0
Content Digest
sha256:ed7b1775c6706b5e5ea24fa6155f078eff1027bd35a17d21834e4407036025e6
Details
Created

2026-11-05 08:32:41 UTC

Size

1.05 GB

Content Digest
Labels
  • maintainer
    Stirling-Tools
  • org.opencontainers.image.authors
    Stirling-Tools
  • org.opencontainers.image.created
    2026-11-05T08:28:15.476Z
  • org.opencontainers.image.description
    #1 PDF Application on GitHub that lets you edit PDFs on any device anywhere
  • org.opencontainers.image.documentation
    https://docs.stirlingpdf.com
  • org.opencontainers.image.keywords
    PDF, manipulation, API, Spring Boot, React
  • org.opencontainers.image.licenses
    NOASSERTION
  • org.opencontainers.image.revision
    7825214811d98fd3ec260bf315cd998ecb73b36b
  • org.opencontainers.image.source
    https://github.com/Stirling-Tools/Stirling-PDF
  • org.opencontainers.image.title
    Stirling-PDF
  • org.opencontainers.image.url
    https://github.com/Stirling-Tools/Stirling-PDF
  • org.opencontainers.image.vendor
    Stirling-Tools
  • org.opencontainers.image.version
    3.3.0

Environment
DBUS_SESSION_BUS_ADDRESS

/dev/null

DEBIAN_FRONTEND

noninteractive

FORMDETECTION_PREINSTALLEDMODELDIR

/opt/stirling/preinstalled-models

HOME

/home/stirlingpdfuser

JAVA_CUSTOM_OPTS

JAVA_HOME

/opt/java/openjdk

JAVA_VERSION

jdk-25.0.5+8

LANG

C.UTF-8

LANGUAGE

en_US:en

LC_ALL

C.UTF-8

ORT_DISABLE_TELEMETRY

1

PATH

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

PGID

1000

PUID

1000

SAL_TMP

/tmp/stirling-pdf/libre

STIRLING_AOT_ENABLE

false

STIRLING_TEMPFILES_DIRECTORY

/tmp/stirling-pdf

TEMP

/tmp/stirling-pdf

TESS_BASE_PATH

/usr/share/tesseract-ocr/5/tessdata

TMP

/tmp/stirling-pdf

TMPDIR

/tmp/stirling-pdf

UMASK

022

VERSION_TAG

3.3.0

_JVM_OPTS

-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1PeriodicGCInterval=10000 -XX:G1PeriodicGCSystemLoadThreshold=0.0 -XX:+G1PeriodicGCInvokesConcurrent -XX:+UseCompactObjectHeaders -XX:+UseStringDeduplication -XX:+ExplicitGCInvokesConcurrent -XX:ReservedCodeCacheSize=96m -XX:CICompilerCount=2 -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true


Layers

[#000] sha256:7a48b8f0e5c73d0cc2a85b008978396aa19d253dc1b96fdb0b769ee6dcbeca4a - 2.63% (28.4 MB)

[#001] sha256:a0a13467ca2984f233300265c6a4a992f032ed3ac196b4bd448d2715b1a78f72 - 1.01% (10.9 MB)

[#002] sha256:0b66beed9de898af8acc45c290898c836ccedf44b1c0c3e904a3af468b6ac2bd - 5.58% (60.2 MB)

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

[#004] sha256:6275d18c9cfc77e725305b39b89287625a7b9f02ba7727c105b2a93ebe111ef6 - 0.0% (2.41 KB)

[#005] sha256:97874629ffdc8081dde910483561ec15d66754bd7390d747bb524172f5e6ae65 - 26.85% (289 MB)

[#006] sha256:b45cff9132437763ee51159d475a71b584b81a756b440b310d6f8ea28c44f267 - 17.15% (185 MB)

[#007] sha256:7b903db755b547ed459c9dd022ec4cbe5b1048b579a1c444b13ccb6b93de7744 - 0.11% (1.21 MB)

[#008] sha256:d1b478be8c28c27ddb8a0c39268a2fdfede5fe0e0134e79721f9d67d8889b175 - 0.25% (2.72 MB)

[#009] sha256:36a8a9cadb812a726c301f78c7812d5d8e435e9113b633365679af8d3d0dfaf3 - 1.45% (15.6 MB)

[#010] sha256:f0d942ee6c652a4e8cf87c330ce3e3b2dc854036d8fd15c0f46d89acf939166c - 0.02% (235 KB)

[#011] sha256:5c13f54a9f74372680d9ab380b99eb852782de67a0116e6b76cd1117d40dcc06 - 10.47% (113 MB)

[#012] sha256:d7f7744adcb92ae2010fc1c750d030e24cd220943ab91c28cc070aa7cbcc54af - 0.0% (15.6 KB)

[#013] sha256:07ca13d1a17bf12f622e4eaffd941a2160ee2082a408dc994cec07fede93b2f9 - 0.0% (3.61 KB)

[#014] sha256:bcb2d0ff5215f70861f50cb94fa06d6366b44e6c3e7664bd448e68399d63dcbb - 0.0% (3.71 KB)

[#015] sha256:db576c864e40d2de5bce6142371e4583a374d49fac50c6ba5612737603841dde - 0.0% (303 Bytes)

[#016] sha256:2de5f514d2d35e6451061a2f4e765017a9596059e7740e41db80075b701d9ca8 - 0.0% (50.4 KB)

[#017] sha256:eb0fd54b1e9014f777faddadeea20943131103c92ff22158d11a5b2156b4d2dc - 0.0% (5.37 KB)

[#018] sha256:8d390777150335a8cb33984b5b3b51c938c3df79eb502947e0eee992b2fabc2d - 0.0% (764 Bytes)

[#019] sha256:8315e94e1433edc0cc27b5e500e0fb4c6b2c54698ea8c32681edae2f0e839e1c - 0.0% (710 Bytes)

[#020] sha256:e375ae6661a857ad977efaf85e642c5d927cbdf76f960faf175f21ac6e86a081 - 0.02% (256 KB)

[#021] sha256:072d66bfb09bdf04711be716fefb23996412c7f6c2bb0396d019971b17b072ec - 0.0% (93 Bytes)

[#022] sha256:808d27fd1df948b8c6459e373b4ca7919ffcba526f456f6300ddce67ae5d0dff - 18.03% (194 MB)

[#023] sha256:59536ca91cdf5843431110e91b81e880aba359293bd9fa1314e1d8f9ae985bc8 - 0.0% (94 Bytes)

[#024] sha256:59536ca91cdf5843431110e91b81e880aba359293bd9fa1314e1d8f9ae985bc8 - 0.0% (94 Bytes)

[#025] sha256:8726900687d490dbe75c2fbf1e5e4087fbb7317be055109c33f9d9838c800e76 - 11.85% (128 MB)

[#026] sha256:58ccebaf43c69bfdf9f37fce4628ddcf052fae6c44da3803133bb4618f95eb1f - 0.0% (3.28 KB)

[#027] sha256:62f5257740a92d6d5e987b61d7fe89edfd8b7cdb7b58a965c7807893d599d327 - 0.01% (134 KB)

[#028] sha256:69c2b715bc97141337143b2047306136d75c8caf32eb47961b96be256da0083b - 2.36% (25.5 MB)

[#029] sha256:47b321d3a0d99dbde983a4684dfc68cd7105907bb4f493fa8dd7d49806f17560 - 2.17% (23.4 MB)

[#030] sha256:0919348a5105b6c365c5e2fe9590ae839d2dfd4c133fdcba9c369e0c8ab1190d - 0.01% (105 KB)

[#031] sha256:83a672efcd85563cae4999291617c61f754df350e36b3035777021a9cebd7a14 - 0.0% (148 Bytes)


History
2026-10-25 14:17:45 UTC

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

2026-10-25 14:17:45 UTC

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

2026-10-25 14:17:45 UTC

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

2026-10-25 14:17:47 UTC

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

2026-10-25 14:17:47 UTC

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

2026-10-29 19:16:54 UTC (buildkit.dockerfile.v0)

ENV JAVA_HOME=/opt/java/openjdk

2026-10-29 19:16:54 UTC (buildkit.dockerfile.v0)

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

2026-10-29 19:16:54 UTC (buildkit.dockerfile.v0)

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

2026-10-29 19:16:54 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; apt-get update; DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends fontconfig ca-certificates p11-kit 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

2026-10-29 19:16:54 UTC (buildkit.dockerfile.v0)

ENV JAVA_VERSION=jdk-25.0.5+8

2026-10-29 19:17:10 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in amd64) ESUM='6fac98f0c8202efc3135a9e9e42aa61963ec42d1c5cbb40caf231e7b14a24ef6'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.5%2B8/OpenJDK25U-jre_x64_linux_hotspot_25.0.5_8.tar.gz'; ;; arm64) ESUM='963931723891302ebb2687178532c3d793d71e2577cd058061c7efb396140a86'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.5%2B8/OpenJDK25U-jre_aarch64_linux_hotspot_25.0.5_8.tar.gz'; ;; ppc64el) ESUM='da080e477f4897703efac82576c914abde64c91ee3081873e330e4aff9bb64b9'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.5%2B8/OpenJDK25U-jre_ppc64le_linux_hotspot_25.0.5_8.tar.gz'; ;; riscv64) ESUM='224c72d235b0b9ae49e642ae75ade8d8ed69ff693b9ae2fa7cef8e0e48760289'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.5%2B8/OpenJDK25U-jre_riscv64_linux_hotspot_25.0.5_8.tar.gz'; ;; s390x) ESUM='68fd959a83c4c0fa18e50d332323b178e6f4f14bf0a5e7f708114545013c3389'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.5%2B8/OpenJDK25U-jre_s390x_linux_hotspot_25.0.5_8.tar.gz'; ;; *) echo "Unsupported arch: ${ARCH}"; exit 1; ;; esac; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends wget gnupg; 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; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark > /dev/null; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; rm -rf /var/lib/apt/lists/*; find "$JAVA_HOME/lib" -name '*.so' -exec dirname '{}' ';' | sort -u > /etc/ld.so.conf.d/docker-openjdk.conf; ldconfig; java -Xshare:dump; # buildkit

2026-10-29 19:17:10 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; echo "Verifying install ..."; echo "java --version"; java --version; echo "Complete." # buildkit

2026-10-29 19:17:10 UTC (buildkit.dockerfile.v0)

COPY --chmod=755 entrypoint.sh /__cacert_entrypoint.sh # buildkit

2026-10-29 19:17:10 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/__cacert_entrypoint.sh"]

2026-11-04 12:12:51 UTC (buildkit.dockerfile.v0)

SHELL [/bin/bash -o pipefail -c]

2026-11-04 12:12:51 UTC (buildkit.dockerfile.v0)

ENV DEBIAN_FRONTEND=noninteractive LANG=C.UTF-8 LC_ALL=C.UTF-8 TESS_BASE_PATH=/usr/share/tesseract-ocr/5/tessdata

2026-11-04 12:12:51 UTC (buildkit.dockerfile.v0)

ARG UNOSERVER_VERSION=3.7

2026-11-04 12:12:51 UTC (buildkit.dockerfile.v0)

RUN |1 UNOSERVER_VERSION=3.7 /bin/bash -o pipefail -c set -eux; apt-get update; apt-get upgrade -y --no-install-recommends; apt-get install -y --no-install-recommends software-properties-common; add-apt-repository -y ppa:libreoffice/ppa; apt-get update; apt-get install -y --no-install-recommends ca-certificates tzdata tini bash fontconfig curl poppler-utils fontforge unpaper pngquant fonts-dejavu fonts-liberation2 fonts-crosextra-caladea fonts-crosextra-carlito fonts-noto-core fonts-noto-mono fonts-noto-extra fonts-noto-cjk poppler-data fonts-freefont-ttf fonts-terminus python3 python3-uno python3-packaging libxml2 libxslt1.1 tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-por tesseract-ocr-chi-sim tesseract-ocr-osd libcairo2 libpango-1.0-0 libpangoft2-1.0-0 libgdk-pixbuf-2.0-0 libfreetype6 libfontconfig1 libx11-6 libxt6 libxext6 libxrender1 libxtst6 libxi6 libxinerama1 libxkbcommon0 libsm6 libice6 libegl1 libgl1 libopengl0 libdbus-1-3 libglib2.0-0 libnss3 libasound2t64 libxcomposite1 libxrandr2 xvfb x11-utils coreutils libreoffice-writer-nogui libreoffice-calc-nogui libreoffice-impress-nogui libreoffice-draw-nogui libreoffice-base-nogui libreoffice-java-common ; libreoffice --version; soffice --version 2>/dev/null || true; /usr/lib/libreoffice/program/soffice.bin --headless --convert-to pdf /dev/null 2>/dev/null || true; fc-cache -f -v 2>&1 | awk 'NR <= 20'; apt-get remove --purge -y software-properties-common || true; apt-get autoremove --purge -y || true; rm -rf /var/lib/apt/lists/*; rm -rf /usr/share/doc/* /usr/share/man/* /usr/share/info/* /usr/share/lintian/* /usr/share/linda/* /usr/share/icons/* /usr/share/themes/* /usr/share/javascript/* /usr/share/gtk-3.0/* /usr/share/fontforge/pixmaps /usr/share/fontforge/osx /usr/share/fontforge/cidmap /usr/share/fontforge/prefs /usr/share/liblangtag/* /usr/share/tcltk/* /usr/share/python-wheels/* /usr/share/glib-2.0/schemas/* /usr/share/mime/* /usr/share/xml/iso-codes /usr/share/GConf /usr/share/bash-completion /usr/share/zsh /usr/share/libmysofa /usr/share/alsa /usr/share/iso-codes /usr/share/perl5 /usr/share/libthai /usr/share/libexttextcat /usr/share/openal /usr/share/gcc; find /usr/share/locale -mindepth 1 -maxdepth 1 -type d ! -name 'en*' -exec rm -rf {} + 2>/dev/null || true; rm -rf /usr/share/i18n/locales /usr/share/i18n/charmaps; rm -rf /usr/lib/libreoffice/share/gallery /usr/lib/libreoffice/share/template /usr/lib/libreoffice/share/wizards /usr/lib/libreoffice/share/autotext /usr/lib/libreoffice/help /usr/lib/libreoffice/share/config/images_*.zip /usr/lib/libreoffice/share/basic /usr/lib/libreoffice/share/Scripts /usr/lib/libreoffice/share/autocorr /usr/lib/libreoffice/share/classification /usr/lib/libreoffice/share/wordbook /usr/lib/libreoffice/share/fingerprint /usr/lib/libreoffice/share/xdg /usr/lib/libreoffice/share/numbertext /usr/lib/libreoffice/share/shell /usr/lib/libreoffice/share/palette /usr/lib/libreoffice/share/theme_definitions /usr/lib/libreoffice/share/xslt /usr/lib/libreoffice/share/labels /usr/lib/libreoffice/share/dtd /usr/lib/libreoffice/share/tipoftheday /usr/lib/libreoffice/share/toolbarmode /usr/lib/libreoffice/share/psprint /usr/lib/libreoffice/CREDITS.fodt /usr/lib/libreoffice/LICENSE.html; rm -rf /usr/lib/libreoffice/share/extensions/wiki-publisher /usr/lib/libreoffice/share/extensions/nlpsolver /usr/lib/libreoffice/share/extensions/dict-* 2>/dev/null || true; rm -rf /usr/lib/libreoffice/program/libdba* /usr/lib/libreoffice/program/libdbahsql* /usr/lib/libreoffice/program/libdbu* /usr/lib/libreoffice/program/libreport* 2>/dev/null || true; rm -rf /usr/lib/python3.12/test /usr/lib/python3.12/idlelib /usr/lib/python3.12/tkinter /usr/lib/python3.12/lib2to3 /usr/lib/python3.12/pydoc_data; rm -rf /usr/lib/python3/dist-packages/scipy /usr/lib/python3/dist-packages/sympy /usr/lib/python3/dist-packages/mpmath; rm -rf /usr/lib/python3/dist-packages/cffi /usr/lib/python3/dist-packages/cffi-*.dist-info /usr/lib/python3/dist-packages/_cffi_backend*.so /usr/lib/python3/dist-packages/_cffi_backend*.cpython*.so 2>/dev/null || true; find /usr/lib -name '*.so*' -type f -not -path '*/jvm/*' -not -path '*/libreoffice/*' -exec strip --strip-unneeded {} + 2>/dev/null || true; MULTIARCH_LIBDIR=$(dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || find /usr/lib -maxdepth 1 -type d -name '*-linux-gnu' | head -1); rm -f "${MULTIARCH_LIBDIR}"/libLLVM*.so* "${MULTIARCH_LIBDIR}"/libgallium*.so* 2>/dev/null || true; find /usr/lib/python3* -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true; find /usr/lib/python3* \( -name '*.pyc' -o -name '*.pyi' \) -delete 2>/dev/null || true; rm -rf /usr/share/bug /usr/share/lintian /usr/share/linda /var/lib/dpkg/info/*.list /var/lib/dpkg/info/*.md5sums /var/lib/dpkg/info/*.conffiles /var/lib/dpkg/info/*.postinst /var/lib/dpkg/info/*.preinst /var/lib/dpkg/info/*.prerm /var/lib/dpkg/info/*.postrm /var/lib/dpkg/info/*.triggers /var/lib/dpkg/info/*.shlibs /var/lib/dpkg/info/*.symbols /var/lib/dpkg/info/*.templates /var/log/dpkg.log /var/log/apt/* /usr/local/share/ghostscript/*/doc /usr/local/share/ghostscript/*/examples /usr/share/ImageMagick-*/doc /usr/share/ImageMagick-*/www; rm -rf /usr/share/tesseract-ocr/*/tessdata/tessconfigs; find /usr/share/fonts/truetype/noto -type f ! -name '*Regular*' -delete 2>/dev/null || true; find /usr/share/fonts/opentype -type f ! -name '*Regular*' -delete 2>/dev/null || true; find /usr/share/fonts/truetype -name '*DejaVu*' ! -name '*-Regular*' ! -name '*-Bold*' ! -name '*Bold.ttf' ! -name 'DejaVuSans.ttf' ! -name 'DejaVuSerif.ttf' ! -name 'DejaVuSansMono.ttf' -type f -delete 2>/dev/null || true; find /usr/share/fonts -type d -empty -delete 2>/dev/null || true; GCONV_DIR=$(find /usr/lib -type d -name gconv 2>/dev/null | head -1); if [ -n "$GCONV_DIR" ] && [ -d "$GCONV_DIR" ]; then mkdir -p /tmp/gconv-keep; for mod in UTF-8.so UTF-16.so UTF-32.so UTF-7.so ISO8859-1.so ISO8859-15.so ISO8859-2.so ISO8859-9.so UNICODE.so CP1252.so CP1251.so CP1250.so EUC-JP.so EUC-KR.so EUC-CN.so SHIFT_JIS.so GB18030.so BIG5.so gconv-modules gconv-modules.d gconv-modules.cache; do [ -e "$GCONV_DIR/$mod" ] && cp -a "$GCONV_DIR/$mod" /tmp/gconv-keep/ 2>/dev/null || true; done; rm -rf "$GCONV_DIR"/*; cp -a /tmp/gconv-keep/* "$GCONV_DIR/" 2>/dev/null || true; rm -rf /tmp/gconv-keep; fi; rm -rf /var/cache/fontconfig/* /tmp/* # buildkit

2026-11-04 13:12:17 UTC (buildkit.dockerfile.v0)

COPY /opt/calibre /opt/calibre # buildkit

2026-11-04 13:08:20 UTC (buildkit.dockerfile.v0)

COPY /usr/local/bin/qpdf /usr/bin/qpdf # buildkit

2026-11-04 13:08:20 UTC (buildkit.dockerfile.v0)

COPY /magick-export/ / # buildkit

2026-11-04 13:09:46 UTC (buildkit.dockerfile.v0)

COPY /usr/local/bin/gs /usr/local/bin/gs # buildkit

2026-11-04 12:34:17 UTC (buildkit.dockerfile.v0)

COPY /usr/local/share/ghostscript /usr/local/share/ghostscript # buildkit

2026-11-04 13:04:57 UTC (buildkit.dockerfile.v0)

COPY /opt/venv /opt/venv # buildkit

2026-11-04 13:12:20 UTC (buildkit.dockerfile.v0)

RUN |1 UNOSERVER_VERSION=3.7 /bin/bash -o pipefail -c ldconfig /usr/local/lib && PYTHONDONTWRITEBYTECODE=1 /opt/venv/bin/python -c "import cffi; print('cffi OK:', cffi.__version__)" && PYTHONDONTWRITEBYTECODE=1 /opt/venv/bin/python -c "import cv2; print('OpenCV', cv2.__version__)" && PYTHONDONTWRITEBYTECODE=1 /opt/venv/bin/python -c "import ocrmypdf; print('ocrmypdf OK')" && find /opt/venv -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true # buildkit

2026-11-04 13:12:20 UTC (buildkit.dockerfile.v0)

ARG PUID=1000

2026-11-04 13:12:20 UTC (buildkit.dockerfile.v0)

ARG PGID=1000

2026-11-04 13:12:20 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.7 PUID=1000 PGID=1000 /bin/bash -o pipefail -c set -eux; if ! getent group stirlingpdfgroup >/dev/null 2>&1; then groupadd -g "${PGID}" stirlingpdfgroup 2>/dev/null || groupadd stirlingpdfgroup; fi; if ! id -u stirlingpdfuser >/dev/null 2>&1; then useradd -m -u "${PUID}" -g stirlingpdfgroup -d /home/stirlingpdfuser -s /bin/bash stirlingpdfuser 2>/dev/null || useradd -m -g stirlingpdfgroup -d /home/stirlingpdfuser -s /bin/bash stirlingpdfuser; fi # buildkit

2026-11-04 13:12:20 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.7 PUID=1000 PGID=1000 /bin/bash -o pipefail -c set -eux; if ! getent group stirlingofficegroup >/dev/null 2>&1; then groupadd -g 1100 stirlingofficegroup 2>/dev/null || groupadd stirlingofficegroup; fi; if ! id -u stirlingofficeuser >/dev/null 2>&1; then useradd -m -u 1100 -g stirlingofficegroup -d /home/stirlingofficeuser -s /usr/sbin/nologin stirlingofficeuser 2>/dev/null || useradd -m -g stirlingofficegroup -d /home/stirlingofficeuser -s /usr/sbin/nologin stirlingofficeuser; fi; mkdir -p /var/lib/libreoffice-sandbox; chown stirlingofficeuser:stirlingofficegroup /home/stirlingofficeuser /var/lib/libreoffice-sandbox; chmod 700 /var/lib/libreoffice-sandbox # buildkit

2026-11-04 13:12:20 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.7 PUID=1000 PGID=1000 /bin/bash -o pipefail -c set -eux; mkdir -p /configs /configs/cache /configs/heap_dumps /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders /storage /tmp/stirling-pdf/heap_dumps; chown -R stirlingpdfuser:stirlingpdfgroup /home/stirlingpdfuser /configs /logs /customFiles /pipeline /storage /tmp/stirling-pdf; chmod 750 /tmp/stirling-pdf; chmod 750 /tmp/stirling-pdf/heap_dumps # buildkit

2026-11-04 13:12:23 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.7 PUID=1000 PGID=1000 /bin/bash -o pipefail -c set -eux; ln -sf /opt/calibre/ebook-convert /usr/bin/ebook-convert; ln -sf /opt/venv/bin/unoconvert /usr/local/bin/unoconvert; ln -sf /opt/venv/bin/unoserver /usr/local/bin/unoserver; ln -sf /opt/venv/bin/ocrmypdf /usr/local/bin/ocrmypdf; ln -sf /opt/venv/bin/weasyprint /usr/local/bin/weasyprint; ln -sf /opt/venv/bin/unoping /usr/local/bin/unoping; fc-cache -f # buildkit

2026-11-04 13:12:23 UTC (buildkit.dockerfile.v0)

COPY /usr/local/bin/lo-sandbox /usr/local/lib/stirling/lo-sandbox # buildkit

2026-11-04 13:12:23 UTC (buildkit.dockerfile.v0)

COPY stirling-hardening.xcd /usr/lib/libreoffice/share/registry/stirling-hardening.xcd # buildkit

2026-11-04 13:12:23 UTC (buildkit.dockerfile.v0)

COPY unoserver-pipe-transport.py /usr/local/lib/stirling/unoserver-pipe-transport.py # buildkit

2026-11-04 13:12:23 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.7 PUID=1000 PGID=1000 /bin/bash -o pipefail -c set -eux; chown root:root /usr/local/lib/stirling/lo-sandbox /usr/lib/libreoffice/share/registry/stirling-hardening.xcd; chmod 0755 /usr/local/lib/stirling/lo-sandbox; chmod 0644 /usr/lib/libreoffice/share/registry/stirling-hardening.xcd; for name in /usr/bin/soffice /usr/bin/libreoffice /usr/bin/ooffice; do if [ -e "$name" ] || [ -L "$name" ]; then rm -f "$name"; fi; cp /usr/local/lib/stirling/lo-sandbox "$name"; chown root:root "$name"; chmod 0755 "$name"; done; /opt/venv/bin/python /usr/local/lib/stirling/unoserver-pipe-transport.py "$(/opt/venv/bin/python -c 'import unoserver, os; print(os.path.dirname(unoserver.__file__))')"; STIRLING_LO_SANDBOX=off /usr/bin/soffice --version # buildkit

2026-11-04 13:12:23 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.title=Stirling-PDF Base org.opencontainers.image.description=Pre-built base image with Calibre, Ghostscript, QPDF, ImageMagick, LibreOffice, OCRmyPDF and dependencies org.opencontainers.image.source=https://github.com/Stirling-Tools/Stirling-PDF org.opencontainers.image.licenses=MIT org.opencontainers.image.vendor=Stirling-Tools org.opencontainers.image.url=https://www.stirlingpdf.com org.opencontainers.image.documentation=https://docs.stirlingpdf.com maintainer=Stirling-Tools org.opencontainers.image.authors=Stirling-Tools

2026-11-05 08:28:42 UTC (buildkit.dockerfile.v0)

ARG VERSION_TAG=3.3.0

2026-11-05 08:28:42 UTC (buildkit.dockerfile.v0)

WORKDIR /app

2026-11-05 08:32:36 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /layers/dependencies/ /app/ # buildkit

2026-09-24 07:50:26 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /layers/spring-boot-loader/ /app/ # buildkit

2026-09-24 07:50:26 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /layers/snapshot-dependencies/ /app/ # buildkit

2026-11-05 08:32:36 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /layers/application/ /app/ # buildkit

2026-09-24 07:50:10 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /app/build/libs/restart-helper.jar /restart-helper.jar # buildkit

2026-11-02 14:01:08 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 scripts/ /scripts/ # buildkit

2026-09-24 07:50:09 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /preinstalled-models/ /opt/stirling/preinstalled-models/ # buildkit

2026-11-05 08:32:39 UTC (buildkit.dockerfile.v0)

COPY app/core/src/main/resources/static/fonts/*.ttf /usr/share/fonts/truetype/ # buildkit

2026-11-05 08:32:41 UTC (buildkit.dockerfile.v0)

RUN |1 VERSION_TAG=3.3.0 /bin/bash -o pipefail -c set -eux; chmod +x /scripts/*; ln -s /logs /app/logs; ln -s /configs /app/configs; ln -s /customFiles /app/customFiles; ln -s /pipeline /app/pipeline; ln -s /storage /app/storage; chown -h stirlingpdfuser:stirlingpdfgroup /app/logs /app/configs /app/customFiles /app/pipeline /app/storage; chown stirlingpdfuser:stirlingpdfgroup /app; chmod 750 /tmp/stirling-pdf; chmod 750 /tmp/stirling-pdf/heap_dumps; fc-cache -f # buildkit

2026-11-05 08:32:41 UTC (buildkit.dockerfile.v0)

RUN |1 VERSION_TAG=3.3.0 /bin/bash -o pipefail -c echo "${VERSION_TAG:-dev}" > /etc/stirling_version # buildkit

2026-11-05 08:32:41 UTC (buildkit.dockerfile.v0)

ENV VERSION_TAG=3.3.0 FORMDETECTION_PREINSTALLEDMODELDIR=/opt/stirling/preinstalled-models ORT_DISABLE_TELEMETRY=1 STIRLING_AOT_ENABLE=false _JVM_OPTS=-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1PeriodicGCInterval=10000 -XX:G1PeriodicGCSystemLoadThreshold=0.0 -XX:+G1PeriodicGCInvokesConcurrent -XX:+UseCompactObjectHeaders -XX:+UseStringDeduplication -XX:+ExplicitGCInvokesConcurrent -XX:ReservedCodeCacheSize=96m -XX:CICompilerCount=2 -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true JAVA_CUSTOM_OPTS= HOME=/home/stirlingpdfuser PUID=1000 PGID=1000 UMASK=022 STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf TMPDIR=/tmp/stirling-pdf TEMP=/tmp/stirling-pdf TMP=/tmp/stirling-pdf DBUS_SESSION_BUS_ADDRESS=/dev/null SAL_TMP=/tmp/stirling-pdf/libre

2026-11-05 08:32:41 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.title=Stirling-PDF org.opencontainers.image.description=Full version with Calibre, LibreOffice, Tesseract, OCRmyPDF org.opencontainers.image.source=https://github.com/Stirling-Tools/Stirling-PDF org.opencontainers.image.licenses=MIT org.opencontainers.image.vendor=Stirling-Tools org.opencontainers.image.url=https://www.stirlingpdf.com org.opencontainers.image.documentation=https://docs.stirlingpdf.com maintainer=Stirling-Tools org.opencontainers.image.authors=Stirling-Tools org.opencontainers.image.version=3.3.0 org.opencontainers.image.keywords=PDF, manipulation, API, Spring Boot, React

2026-11-05 08:32:41 UTC (buildkit.dockerfile.v0)

EXPOSE [8080/tcp]

2026-11-05 08:32:41 UTC (buildkit.dockerfile.v0)

STOPSIGNAL SIGTERM

2026-11-05 08:32:41 UTC (buildkit.dockerfile.v0)

HEALTHCHECK {Test:[CMD-SHELL curl -fs --max-time 10 http://localhost:8080${SYSTEM_ROOTURIPATH:-''}/api/v1/info/status || exit 1] Interval:30s Timeout:15s StartPeriod:2m0s StartInterval:0s Retries:5}

2026-11-05 08:32:41 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["tini" "--" "/scripts/init.sh"]

2026-11-05 08:32:41 UTC (buildkit.dockerfile.v0)

CMD []

Details
Created

2026-11-05 09:04:37 UTC

Size

1.01 GB

Content Digest
Labels
  • maintainer
    Stirling-Tools
  • org.opencontainers.image.authors
    Stirling-Tools
  • org.opencontainers.image.created
    2026-11-05T08:28:15.476Z
  • org.opencontainers.image.description
    #1 PDF Application on GitHub that lets you edit PDFs on any device anywhere
  • org.opencontainers.image.documentation
    https://docs.stirlingpdf.com
  • org.opencontainers.image.keywords
    PDF, manipulation, API, Spring Boot, React
  • org.opencontainers.image.licenses
    NOASSERTION
  • org.opencontainers.image.revision
    7825214811d98fd3ec260bf315cd998ecb73b36b
  • org.opencontainers.image.source
    https://github.com/Stirling-Tools/Stirling-PDF
  • org.opencontainers.image.title
    Stirling-PDF
  • org.opencontainers.image.url
    https://github.com/Stirling-Tools/Stirling-PDF
  • org.opencontainers.image.vendor
    Stirling-Tools
  • org.opencontainers.image.version
    3.3.0

Environment
DBUS_SESSION_BUS_ADDRESS

/dev/null

DEBIAN_FRONTEND

noninteractive

FORMDETECTION_PREINSTALLEDMODELDIR

/opt/stirling/preinstalled-models

HOME

/home/stirlingpdfuser

JAVA_CUSTOM_OPTS

JAVA_HOME

/opt/java/openjdk

JAVA_VERSION

jdk-25.0.5+8

LANG

C.UTF-8

LANGUAGE

en_US:en

LC_ALL

C.UTF-8

ORT_DISABLE_TELEMETRY

1

PATH

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

PGID

1000

PUID

1000

SAL_TMP

/tmp/stirling-pdf/libre

STIRLING_AOT_ENABLE

false

STIRLING_TEMPFILES_DIRECTORY

/tmp/stirling-pdf

TEMP

/tmp/stirling-pdf

TESS_BASE_PATH

/usr/share/tesseract-ocr/5/tessdata

TMP

/tmp/stirling-pdf

TMPDIR

/tmp/stirling-pdf

UMASK

022

VERSION_TAG

3.3.0

_JVM_OPTS

-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1PeriodicGCInterval=10000 -XX:G1PeriodicGCSystemLoadThreshold=0.0 -XX:+G1PeriodicGCInvokesConcurrent -XX:+UseCompactObjectHeaders -XX:+UseStringDeduplication -XX:+ExplicitGCInvokesConcurrent -XX:ReservedCodeCacheSize=96m -XX:CICompilerCount=2 -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true


Layers

[#000] sha256:e2d2bb84d02254f4be480ca3c62f94fc12ac959c11b3ce5bd7da3f411b2b9607 - 2.66% (27.6 MB)

[#001] sha256:0b1359735bbb6932be600f454c1bbdb879940fda4119f0f0100755ed768c261b - 1.05% (10.9 MB)

[#002] sha256:9a76370d015058126f34db87213f42adb90645e3c3ac143b7b3c2a8dceee18b9 - 5.69% (59.1 MB)

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

[#004] sha256:7084105cfe13545f4a64e74452e2f706fabb0942fa56d2aacd1109a3d127a7a6 - 0.0% (2.41 KB)

[#005] sha256:328f757c5310d13ebcfcd9b9fd4f4c2584cef4e9bdc6edd653ef51c151d36286 - 27.18% (282 MB)

[#006] sha256:379cb669621eeeca5bf4e48abe91a8ed1afc5d5ec2ac1083ba3a0d30aabab332 - 17.21% (179 MB)

[#007] sha256:128e6741fe9d144b1298635aff7476ed09da58115fb2532ed458d86ca044aee6 - 0.11% (1.14 MB)

[#008] sha256:17c25af6d388575b424bed5b2d67cca5b092384a4d6d28b96f4c1c889ddf2257 - 0.26% (2.71 MB)

[#009] sha256:48224c61026c3a6c2e506e85775cb450f1efe0ecfcee2900d1053a4f1c002372 - 1.5% (15.6 MB)

[#010] sha256:f0d942ee6c652a4e8cf87c330ce3e3b2dc854036d8fd15c0f46d89acf939166c - 0.02% (235 KB)

[#011] sha256:0dcf0009a26518cccef2a0d99d0bda42a774da807e343219e93c60edbe071020 - 8.73% (90.6 MB)

[#012] sha256:ba3495c9df70a1c5885d9b6af80970c49fde9ce4d42a27903dbea9d5d535ed09 - 0.0% (15.3 KB)

[#013] sha256:c12f55e3cad34bfac3ba99788c2fe60dc4ee316daca1e8e54a47fff6f0612a23 - 0.0% (3.61 KB)

[#014] sha256:2ea488d91ab42907f272f4b5812af5e3c689de1a845552326e1bb3f1c0d7f893 - 0.0% (3.71 KB)

[#015] sha256:777f2945f137306f0fc2c19452a3e4e822d7dd8d45853fa72992813aa8232d61 - 0.0% (302 Bytes)

[#016] sha256:7dc33206c8febb0c5012aefe5412d140193bb21361a8c34c6206ec171b66b312 - 0.0% (50.4 KB)

[#017] sha256:7872718b788a43702f090f1b892869bd8e262678e825489054f0183f7e3713da - 0.0% (5.54 KB)

[#018] sha256:60b7af26390a830ec415751828d02863bb34a7c1bf9fdf2609d539bcd34b5180 - 0.0% (762 Bytes)

[#019] sha256:f67889905422323ca37219d415bf63bc541d303714ad576461219d6ffdd787e4 - 0.0% (712 Bytes)

[#020] sha256:c07dadb8d6acc82a4095d4b102481521201f889e8778fe75cf2fca4fbda6c86f - 0.03% (268 KB)

[#021] sha256:db34aa0e8e95cc1aa39f269c7444474ba3843b27a29db8fb6e71a6ab5c16f5a5 - 0.0% (92 Bytes)

[#022] sha256:ed7a55f277154a97c412fb10013d9defae69d4194402b3f0252ad84cba8b72b4 - 18.52% (192 MB)

[#023] sha256:59536ca91cdf5843431110e91b81e880aba359293bd9fa1314e1d8f9ae985bc8 - 0.0% (94 Bytes)

[#024] sha256:59536ca91cdf5843431110e91b81e880aba359293bd9fa1314e1d8f9ae985bc8 - 0.0% (94 Bytes)

[#025] sha256:f9f858de7bbe9187cfe9f8319d3592d8a82e7b322afbea5e91426eef5a5b00fd - 12.31% (128 MB)

[#026] sha256:58ccebaf43c69bfdf9f37fce4628ddcf052fae6c44da3803133bb4618f95eb1f - 0.0% (3.28 KB)

[#027] sha256:62f5257740a92d6d5e987b61d7fe89edfd8b7cdb7b58a965c7807893d599d327 - 0.01% (134 KB)

[#028] sha256:69c2b715bc97141337143b2047306136d75c8caf32eb47961b96be256da0083b - 2.45% (25.5 MB)

[#029] sha256:afad2888a88161d6c8f85f60795ae34c19c788ac277a3f7fbbcbbeeb9c2dbe32 - 2.25% (23.4 MB)

[#030] sha256:80f0d81cc95919f68c71f576e4a0d24d5ebaf81625c25b1ff068313536871333 - 0.01% (105 KB)

[#031] sha256:40a69dcab40c437d435abdcdb5989400d98dc663b72f158edf17e13900458e91 - 0.0% (148 Bytes)


History
2026-10-25 14:18:00 UTC

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

2026-10-25 14:18:00 UTC

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

2026-10-25 14:18:00 UTC

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

2026-10-25 14:18:03 UTC

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

2026-10-25 14:18:03 UTC

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

2026-10-29 19:10:24 UTC (buildkit.dockerfile.v0)

ENV JAVA_HOME=/opt/java/openjdk

2026-10-29 19:10:24 UTC (buildkit.dockerfile.v0)

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

2026-10-29 19:10:24 UTC (buildkit.dockerfile.v0)

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

2026-10-29 19:10:24 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; apt-get update; DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends fontconfig ca-certificates p11-kit 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

2026-10-29 19:10:24 UTC (buildkit.dockerfile.v0)

ENV JAVA_VERSION=jdk-25.0.5+8

2026-10-29 19:10:42 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in amd64) ESUM='6fac98f0c8202efc3135a9e9e42aa61963ec42d1c5cbb40caf231e7b14a24ef6'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.5%2B8/OpenJDK25U-jre_x64_linux_hotspot_25.0.5_8.tar.gz'; ;; arm64) ESUM='963931723891302ebb2687178532c3d793d71e2577cd058061c7efb396140a86'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.5%2B8/OpenJDK25U-jre_aarch64_linux_hotspot_25.0.5_8.tar.gz'; ;; ppc64el) ESUM='da080e477f4897703efac82576c914abde64c91ee3081873e330e4aff9bb64b9'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.5%2B8/OpenJDK25U-jre_ppc64le_linux_hotspot_25.0.5_8.tar.gz'; ;; riscv64) ESUM='224c72d235b0b9ae49e642ae75ade8d8ed69ff693b9ae2fa7cef8e0e48760289'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.5%2B8/OpenJDK25U-jre_riscv64_linux_hotspot_25.0.5_8.tar.gz'; ;; s390x) ESUM='68fd959a83c4c0fa18e50d332323b178e6f4f14bf0a5e7f708114545013c3389'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.5%2B8/OpenJDK25U-jre_s390x_linux_hotspot_25.0.5_8.tar.gz'; ;; *) echo "Unsupported arch: ${ARCH}"; exit 1; ;; esac; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends wget gnupg; 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; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark > /dev/null; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; rm -rf /var/lib/apt/lists/*; find "$JAVA_HOME/lib" -name '*.so' -exec dirname '{}' ';' | sort -u > /etc/ld.so.conf.d/docker-openjdk.conf; ldconfig; java -Xshare:dump; # buildkit

2026-10-29 19:10:42 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; echo "Verifying install ..."; echo "java --version"; java --version; echo "Complete." # buildkit

2026-10-29 19:10:42 UTC (buildkit.dockerfile.v0)

COPY --chmod=755 entrypoint.sh /__cacert_entrypoint.sh # buildkit

2026-10-29 19:10:42 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/__cacert_entrypoint.sh"]

2026-11-04 13:21:19 UTC (buildkit.dockerfile.v0)

SHELL [/bin/bash -o pipefail -c]

2026-11-04 13:21:19 UTC (buildkit.dockerfile.v0)

ENV DEBIAN_FRONTEND=noninteractive LANG=C.UTF-8 LC_ALL=C.UTF-8 TESS_BASE_PATH=/usr/share/tesseract-ocr/5/tessdata

2026-11-04 13:21:19 UTC (buildkit.dockerfile.v0)

ARG UNOSERVER_VERSION=3.7

2026-11-04 13:21:19 UTC (buildkit.dockerfile.v0)

RUN |1 UNOSERVER_VERSION=3.7 /bin/bash -o pipefail -c set -eux; apt-get update; apt-get upgrade -y --no-install-recommends; apt-get install -y --no-install-recommends software-properties-common; add-apt-repository -y ppa:libreoffice/ppa; apt-get update; apt-get install -y --no-install-recommends ca-certificates tzdata tini bash fontconfig curl poppler-utils fontforge unpaper pngquant fonts-dejavu fonts-liberation2 fonts-crosextra-caladea fonts-crosextra-carlito fonts-noto-core fonts-noto-mono fonts-noto-extra fonts-noto-cjk poppler-data fonts-freefont-ttf fonts-terminus python3 python3-uno python3-packaging libxml2 libxslt1.1 tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-por tesseract-ocr-chi-sim tesseract-ocr-osd libcairo2 libpango-1.0-0 libpangoft2-1.0-0 libgdk-pixbuf-2.0-0 libfreetype6 libfontconfig1 libx11-6 libxt6 libxext6 libxrender1 libxtst6 libxi6 libxinerama1 libxkbcommon0 libsm6 libice6 libegl1 libgl1 libopengl0 libdbus-1-3 libglib2.0-0 libnss3 libasound2t64 libxcomposite1 libxrandr2 xvfb x11-utils coreutils libreoffice-writer-nogui libreoffice-calc-nogui libreoffice-impress-nogui libreoffice-draw-nogui libreoffice-base-nogui libreoffice-java-common ; libreoffice --version; soffice --version 2>/dev/null || true; /usr/lib/libreoffice/program/soffice.bin --headless --convert-to pdf /dev/null 2>/dev/null || true; fc-cache -f -v 2>&1 | awk 'NR <= 20'; apt-get remove --purge -y software-properties-common || true; apt-get autoremove --purge -y || true; rm -rf /var/lib/apt/lists/*; rm -rf /usr/share/doc/* /usr/share/man/* /usr/share/info/* /usr/share/lintian/* /usr/share/linda/* /usr/share/icons/* /usr/share/themes/* /usr/share/javascript/* /usr/share/gtk-3.0/* /usr/share/fontforge/pixmaps /usr/share/fontforge/osx /usr/share/fontforge/cidmap /usr/share/fontforge/prefs /usr/share/liblangtag/* /usr/share/tcltk/* /usr/share/python-wheels/* /usr/share/glib-2.0/schemas/* /usr/share/mime/* /usr/share/xml/iso-codes /usr/share/GConf /usr/share/bash-completion /usr/share/zsh /usr/share/libmysofa /usr/share/alsa /usr/share/iso-codes /usr/share/perl5 /usr/share/libthai /usr/share/libexttextcat /usr/share/openal /usr/share/gcc; find /usr/share/locale -mindepth 1 -maxdepth 1 -type d ! -name 'en*' -exec rm -rf {} + 2>/dev/null || true; rm -rf /usr/share/i18n/locales /usr/share/i18n/charmaps; rm -rf /usr/lib/libreoffice/share/gallery /usr/lib/libreoffice/share/template /usr/lib/libreoffice/share/wizards /usr/lib/libreoffice/share/autotext /usr/lib/libreoffice/help /usr/lib/libreoffice/share/config/images_*.zip /usr/lib/libreoffice/share/basic /usr/lib/libreoffice/share/Scripts /usr/lib/libreoffice/share/autocorr /usr/lib/libreoffice/share/classification /usr/lib/libreoffice/share/wordbook /usr/lib/libreoffice/share/fingerprint /usr/lib/libreoffice/share/xdg /usr/lib/libreoffice/share/numbertext /usr/lib/libreoffice/share/shell /usr/lib/libreoffice/share/palette /usr/lib/libreoffice/share/theme_definitions /usr/lib/libreoffice/share/xslt /usr/lib/libreoffice/share/labels /usr/lib/libreoffice/share/dtd /usr/lib/libreoffice/share/tipoftheday /usr/lib/libreoffice/share/toolbarmode /usr/lib/libreoffice/share/psprint /usr/lib/libreoffice/CREDITS.fodt /usr/lib/libreoffice/LICENSE.html; rm -rf /usr/lib/libreoffice/share/extensions/wiki-publisher /usr/lib/libreoffice/share/extensions/nlpsolver /usr/lib/libreoffice/share/extensions/dict-* 2>/dev/null || true; rm -rf /usr/lib/libreoffice/program/libdba* /usr/lib/libreoffice/program/libdbahsql* /usr/lib/libreoffice/program/libdbu* /usr/lib/libreoffice/program/libreport* 2>/dev/null || true; rm -rf /usr/lib/python3.12/test /usr/lib/python3.12/idlelib /usr/lib/python3.12/tkinter /usr/lib/python3.12/lib2to3 /usr/lib/python3.12/pydoc_data; rm -rf /usr/lib/python3/dist-packages/scipy /usr/lib/python3/dist-packages/sympy /usr/lib/python3/dist-packages/mpmath; rm -rf /usr/lib/python3/dist-packages/cffi /usr/lib/python3/dist-packages/cffi-*.dist-info /usr/lib/python3/dist-packages/_cffi_backend*.so /usr/lib/python3/dist-packages/_cffi_backend*.cpython*.so 2>/dev/null || true; find /usr/lib -name '*.so*' -type f -not -path '*/jvm/*' -not -path '*/libreoffice/*' -exec strip --strip-unneeded {} + 2>/dev/null || true; MULTIARCH_LIBDIR=$(dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null || find /usr/lib -maxdepth 1 -type d -name '*-linux-gnu' | head -1); rm -f "${MULTIARCH_LIBDIR}"/libLLVM*.so* "${MULTIARCH_LIBDIR}"/libgallium*.so* 2>/dev/null || true; find /usr/lib/python3* -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true; find /usr/lib/python3* \( -name '*.pyc' -o -name '*.pyi' \) -delete 2>/dev/null || true; rm -rf /usr/share/bug /usr/share/lintian /usr/share/linda /var/lib/dpkg/info/*.list /var/lib/dpkg/info/*.md5sums /var/lib/dpkg/info/*.conffiles /var/lib/dpkg/info/*.postinst /var/lib/dpkg/info/*.preinst /var/lib/dpkg/info/*.prerm /var/lib/dpkg/info/*.postrm /var/lib/dpkg/info/*.triggers /var/lib/dpkg/info/*.shlibs /var/lib/dpkg/info/*.symbols /var/lib/dpkg/info/*.templates /var/log/dpkg.log /var/log/apt/* /usr/local/share/ghostscript/*/doc /usr/local/share/ghostscript/*/examples /usr/share/ImageMagick-*/doc /usr/share/ImageMagick-*/www; rm -rf /usr/share/tesseract-ocr/*/tessdata/tessconfigs; find /usr/share/fonts/truetype/noto -type f ! -name '*Regular*' -delete 2>/dev/null || true; find /usr/share/fonts/opentype -type f ! -name '*Regular*' -delete 2>/dev/null || true; find /usr/share/fonts/truetype -name '*DejaVu*' ! -name '*-Regular*' ! -name '*-Bold*' ! -name '*Bold.ttf' ! -name 'DejaVuSans.ttf' ! -name 'DejaVuSerif.ttf' ! -name 'DejaVuSansMono.ttf' -type f -delete 2>/dev/null || true; find /usr/share/fonts -type d -empty -delete 2>/dev/null || true; GCONV_DIR=$(find /usr/lib -type d -name gconv 2>/dev/null | head -1); if [ -n "$GCONV_DIR" ] && [ -d "$GCONV_DIR" ]; then mkdir -p /tmp/gconv-keep; for mod in UTF-8.so UTF-16.so UTF-32.so UTF-7.so ISO8859-1.so ISO8859-15.so ISO8859-2.so ISO8859-9.so UNICODE.so CP1252.so CP1251.so CP1250.so EUC-JP.so EUC-KR.so EUC-CN.so SHIFT_JIS.so GB18030.so BIG5.so gconv-modules gconv-modules.d gconv-modules.cache; do [ -e "$GCONV_DIR/$mod" ] && cp -a "$GCONV_DIR/$mod" /tmp/gconv-keep/ 2>/dev/null || true; done; rm -rf "$GCONV_DIR"/*; cp -a /tmp/gconv-keep/* "$GCONV_DIR/" 2>/dev/null || true; rm -rf /tmp/gconv-keep; fi; rm -rf /var/cache/fontconfig/* /tmp/* # buildkit

2026-11-04 13:06:23 UTC (buildkit.dockerfile.v0)

COPY /opt/calibre /opt/calibre # buildkit

2026-11-04 13:02:31 UTC (buildkit.dockerfile.v0)

COPY /usr/local/bin/qpdf /usr/bin/qpdf # buildkit

2026-11-04 13:02:32 UTC (buildkit.dockerfile.v0)

COPY /magick-export/ / # buildkit

2026-11-04 12:34:17 UTC (buildkit.dockerfile.v0)

COPY /usr/local/bin/gs /usr/local/bin/gs # buildkit

2026-11-04 12:34:17 UTC (buildkit.dockerfile.v0)

COPY /usr/local/share/ghostscript /usr/local/share/ghostscript # buildkit

2026-11-04 13:30:16 UTC (buildkit.dockerfile.v0)

COPY /opt/venv /opt/venv # buildkit

2026-11-04 13:30:43 UTC (buildkit.dockerfile.v0)

RUN |1 UNOSERVER_VERSION=3.7 /bin/bash -o pipefail -c ldconfig /usr/local/lib && PYTHONDONTWRITEBYTECODE=1 /opt/venv/bin/python -c "import cffi; print('cffi OK:', cffi.__version__)" && PYTHONDONTWRITEBYTECODE=1 /opt/venv/bin/python -c "import cv2; print('OpenCV', cv2.__version__)" && PYTHONDONTWRITEBYTECODE=1 /opt/venv/bin/python -c "import ocrmypdf; print('ocrmypdf OK')" && find /opt/venv -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true # buildkit

2026-11-04 13:30:43 UTC (buildkit.dockerfile.v0)

ARG PUID=1000

2026-11-04 13:30:43 UTC (buildkit.dockerfile.v0)

ARG PGID=1000

2026-11-04 13:30:43 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.7 PUID=1000 PGID=1000 /bin/bash -o pipefail -c set -eux; if ! getent group stirlingpdfgroup >/dev/null 2>&1; then groupadd -g "${PGID}" stirlingpdfgroup 2>/dev/null || groupadd stirlingpdfgroup; fi; if ! id -u stirlingpdfuser >/dev/null 2>&1; then useradd -m -u "${PUID}" -g stirlingpdfgroup -d /home/stirlingpdfuser -s /bin/bash stirlingpdfuser 2>/dev/null || useradd -m -g stirlingpdfgroup -d /home/stirlingpdfuser -s /bin/bash stirlingpdfuser; fi # buildkit

2026-11-04 13:30:44 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.7 PUID=1000 PGID=1000 /bin/bash -o pipefail -c set -eux; if ! getent group stirlingofficegroup >/dev/null 2>&1; then groupadd -g 1100 stirlingofficegroup 2>/dev/null || groupadd stirlingofficegroup; fi; if ! id -u stirlingofficeuser >/dev/null 2>&1; then useradd -m -u 1100 -g stirlingofficegroup -d /home/stirlingofficeuser -s /usr/sbin/nologin stirlingofficeuser 2>/dev/null || useradd -m -g stirlingofficegroup -d /home/stirlingofficeuser -s /usr/sbin/nologin stirlingofficeuser; fi; mkdir -p /var/lib/libreoffice-sandbox; chown stirlingofficeuser:stirlingofficegroup /home/stirlingofficeuser /var/lib/libreoffice-sandbox; chmod 700 /var/lib/libreoffice-sandbox # buildkit

2026-11-04 13:30:44 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.7 PUID=1000 PGID=1000 /bin/bash -o pipefail -c set -eux; mkdir -p /configs /configs/cache /configs/heap_dumps /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders /storage /tmp/stirling-pdf/heap_dumps; chown -R stirlingpdfuser:stirlingpdfgroup /home/stirlingpdfuser /configs /logs /customFiles /pipeline /storage /tmp/stirling-pdf; chmod 750 /tmp/stirling-pdf; chmod 750 /tmp/stirling-pdf/heap_dumps # buildkit

2026-11-04 13:30:48 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.7 PUID=1000 PGID=1000 /bin/bash -o pipefail -c set -eux; ln -sf /opt/calibre/ebook-convert /usr/bin/ebook-convert; ln -sf /opt/venv/bin/unoconvert /usr/local/bin/unoconvert; ln -sf /opt/venv/bin/unoserver /usr/local/bin/unoserver; ln -sf /opt/venv/bin/ocrmypdf /usr/local/bin/ocrmypdf; ln -sf /opt/venv/bin/weasyprint /usr/local/bin/weasyprint; ln -sf /opt/venv/bin/unoping /usr/local/bin/unoping; fc-cache -f # buildkit

2026-11-04 13:30:48 UTC (buildkit.dockerfile.v0)

COPY /usr/local/bin/lo-sandbox /usr/local/lib/stirling/lo-sandbox # buildkit

2026-11-04 13:30:48 UTC (buildkit.dockerfile.v0)

COPY stirling-hardening.xcd /usr/lib/libreoffice/share/registry/stirling-hardening.xcd # buildkit

2026-11-04 13:30:48 UTC (buildkit.dockerfile.v0)

COPY unoserver-pipe-transport.py /usr/local/lib/stirling/unoserver-pipe-transport.py # buildkit

2026-11-04 13:30:52 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.7 PUID=1000 PGID=1000 /bin/bash -o pipefail -c set -eux; chown root:root /usr/local/lib/stirling/lo-sandbox /usr/lib/libreoffice/share/registry/stirling-hardening.xcd; chmod 0755 /usr/local/lib/stirling/lo-sandbox; chmod 0644 /usr/lib/libreoffice/share/registry/stirling-hardening.xcd; for name in /usr/bin/soffice /usr/bin/libreoffice /usr/bin/ooffice; do if [ -e "$name" ] || [ -L "$name" ]; then rm -f "$name"; fi; cp /usr/local/lib/stirling/lo-sandbox "$name"; chown root:root "$name"; chmod 0755 "$name"; done; /opt/venv/bin/python /usr/local/lib/stirling/unoserver-pipe-transport.py "$(/opt/venv/bin/python -c 'import unoserver, os; print(os.path.dirname(unoserver.__file__))')"; STIRLING_LO_SANDBOX=off /usr/bin/soffice --version # buildkit

2026-11-04 13:30:52 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.title=Stirling-PDF Base org.opencontainers.image.description=Pre-built base image with Calibre, Ghostscript, QPDF, ImageMagick, LibreOffice, OCRmyPDF and dependencies org.opencontainers.image.source=https://github.com/Stirling-Tools/Stirling-PDF org.opencontainers.image.licenses=MIT org.opencontainers.image.vendor=Stirling-Tools org.opencontainers.image.url=https://www.stirlingpdf.com org.opencontainers.image.documentation=https://docs.stirlingpdf.com maintainer=Stirling-Tools org.opencontainers.image.authors=Stirling-Tools

2026-11-05 08:28:42 UTC (buildkit.dockerfile.v0)

ARG VERSION_TAG=3.3.0

2026-11-05 08:28:42 UTC (buildkit.dockerfile.v0)

WORKDIR /app

2026-11-05 09:04:33 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /layers/dependencies/ /app/ # buildkit

2026-09-24 07:50:26 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /layers/spring-boot-loader/ /app/ # buildkit

2026-09-24 07:50:26 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /layers/snapshot-dependencies/ /app/ # buildkit

2026-11-05 09:04:32 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /layers/application/ /app/ # buildkit

2026-09-24 07:50:10 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /app/build/libs/restart-helper.jar /restart-helper.jar # buildkit

2026-11-02 14:01:08 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 scripts/ /scripts/ # buildkit

2026-09-24 07:50:09 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /preinstalled-models/ /opt/stirling/preinstalled-models/ # buildkit

2026-11-05 09:04:34 UTC (buildkit.dockerfile.v0)

COPY app/core/src/main/resources/static/fonts/*.ttf /usr/share/fonts/truetype/ # buildkit

2026-11-05 09:04:37 UTC (buildkit.dockerfile.v0)

RUN |1 VERSION_TAG=3.3.0 /bin/bash -o pipefail -c set -eux; chmod +x /scripts/*; ln -s /logs /app/logs; ln -s /configs /app/configs; ln -s /customFiles /app/customFiles; ln -s /pipeline /app/pipeline; ln -s /storage /app/storage; chown -h stirlingpdfuser:stirlingpdfgroup /app/logs /app/configs /app/customFiles /app/pipeline /app/storage; chown stirlingpdfuser:stirlingpdfgroup /app; chmod 750 /tmp/stirling-pdf; chmod 750 /tmp/stirling-pdf/heap_dumps; fc-cache -f # buildkit

2026-11-05 09:04:37 UTC (buildkit.dockerfile.v0)

RUN |1 VERSION_TAG=3.3.0 /bin/bash -o pipefail -c echo "${VERSION_TAG:-dev}" > /etc/stirling_version # buildkit

2026-11-05 09:04:37 UTC (buildkit.dockerfile.v0)

ENV VERSION_TAG=3.3.0 FORMDETECTION_PREINSTALLEDMODELDIR=/opt/stirling/preinstalled-models ORT_DISABLE_TELEMETRY=1 STIRLING_AOT_ENABLE=false _JVM_OPTS=-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:G1PeriodicGCInterval=10000 -XX:G1PeriodicGCSystemLoadThreshold=0.0 -XX:+G1PeriodicGCInvokesConcurrent -XX:+UseCompactObjectHeaders -XX:+UseStringDeduplication -XX:+ExplicitGCInvokesConcurrent -XX:ReservedCodeCacheSize=96m -XX:CICompilerCount=2 -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true JAVA_CUSTOM_OPTS= HOME=/home/stirlingpdfuser PUID=1000 PGID=1000 UMASK=022 STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf TMPDIR=/tmp/stirling-pdf TEMP=/tmp/stirling-pdf TMP=/tmp/stirling-pdf DBUS_SESSION_BUS_ADDRESS=/dev/null SAL_TMP=/tmp/stirling-pdf/libre

2026-11-05 09:04:37 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.title=Stirling-PDF org.opencontainers.image.description=Full version with Calibre, LibreOffice, Tesseract, OCRmyPDF org.opencontainers.image.source=https://github.com/Stirling-Tools/Stirling-PDF org.opencontainers.image.licenses=MIT org.opencontainers.image.vendor=Stirling-Tools org.opencontainers.image.url=https://www.stirlingpdf.com org.opencontainers.image.documentation=https://docs.stirlingpdf.com maintainer=Stirling-Tools org.opencontainers.image.authors=Stirling-Tools org.opencontainers.image.version=3.3.0 org.opencontainers.image.keywords=PDF, manipulation, API, Spring Boot, React

2026-11-05 09:04:37 UTC (buildkit.dockerfile.v0)

EXPOSE [8080/tcp]

2026-11-05 09:04:37 UTC (buildkit.dockerfile.v0)

STOPSIGNAL SIGTERM

2026-11-05 09:04:37 UTC (buildkit.dockerfile.v0)

HEALTHCHECK {Test:[CMD-SHELL curl -fs --max-time 10 http://localhost:8080${SYSTEM_ROOTURIPATH:-''}/api/v1/info/status || exit 1] Interval:30s Timeout:15s StartPeriod:2m0s StartInterval:0s Retries:5}

2026-11-05 09:04:37 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["tini" "--" "/scripts/init.sh"]

2026-11-05 09:04:37 UTC (buildkit.dockerfile.v0)

CMD []

Danger Zone
Delete Tag

Please be careful as this will not just delete the reference but also the actual content!

For example when you have latest and v1.2.3 both pointing to the same image
the deletion of latest will also permanently remove v1.2.3.

Delete