Namespace
stirlingtools
Image / Tag
stirling-pdf:2.7.1-fat
Content Digest
sha256:2580595fbd27909db7c14c15430d951904d61bba39aedce14e8a669a97582473
Details
Created

2026-03-13 02:36:48 UTC

Size

1.19 GB

Content Digest
Labels
  • maintainer
    Stirling-Tools
  • org.opencontainers.image.authors
    Stirling-Tools
  • org.opencontainers.image.created
    2026-03-13T00:54:03.149Z
  • 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, fat, air-gapped, API, Spring Boot, React
  • org.opencontainers.image.licenses
    NOASSERTION
  • org.opencontainers.image.ref.name
    ubuntu
  • org.opencontainers.image.revision
    9969fe5a6db7671e0b1d7a29f60f41541ed0d9b6
  • 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
    2.7.1-fat

Environment
DBUS_SESSION_BUS_ADDRESS

/dev/null

DEBIAN_FRONTEND

noninteractive

FAT_DOCKER

true

HOME

/home/stirlingpdfuser

INSTALL_BOOK_AND_ADVANCED_HTML_OPS

false

JAVA_CUSTOM_OPTS

JAVA_HOME

/opt/java/openjdk

JAVA_VERSION

jdk-25.0.2+10

LANG

C.UTF-8

LANGUAGE

en_US:en

LC_ALL

C.UTF-8

LIBREOFFICE_BIN_PATH

/usr/lib/libreoffice/program/soffice.bin

PATH

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

PGID

1000

PUID

1000

QTWEBENGINE_CHROMIUM_FLAGS

--no-sandbox --disable-gpu --disable-software-rasterizer

STIRLING_AOT_ENABLE

false

STIRLING_JVM_PROFILE

balanced

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

UNO_PATH

/usr/lib/libreoffice/program

VERSION_TAG

2.7.1

_JVM_OPTS_BALANCED

-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4m -XX:G1PeriodicGCInterval=60000 -XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders -XX:+ExplicitGCInvokesConcurrent -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true

_JVM_OPTS_PERFORMANCE

-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational -XX:+UseCompactObjectHeaders -XX:+UseStringDeduplication -XX:+AlwaysPreTouch -XX:+ExplicitGCInvokesConcurrent -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true


Layers

[#000] sha256:01d7766a2e4a62b74e0bebf2cd12c47e675e9221174f6570854203e84ffe68b0 - 2.33% (28.4 MB)

[#001] sha256:c455c0f698f7e1cd2c305f426f9306ffd199fdf279d571220d153da681406c51 - 0.9% (10.9 MB)

[#002] sha256:b778806e8a80c3539a1b703b2b5d01890828c8c7de74eb541afb571192642807 - 4.91% (59.8 MB)

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

[#004] sha256:8dbc60fb7edbd02ff22bc83c9018ed57979fa894f84276db97e2f09ddfb1ab8a - 0.0% (2.23 KB)

[#005] sha256:2b3f15f319175c60a8855285bc5d768ce5e88c164c7de5710f845a669afa3d3e - 40.74% (497 MB)

[#006] sha256:70e7e6e6fbfabc30978fd244b6b6efca22db2d321d1d3e1550a3fb9bfa8d5dc9 - 11.28% (137 MB)

[#007] sha256:e4e90fde0748e8acad4d859e1a8e19af0bc7aed8a6e71e9055d323b57299ab52 - 0.17% (2.1 MB)

[#008] sha256:e24cfaae28670b24e262cc4164b4e39f46d9ba3e27a3eaa34328013c6716feae - 16.6% (202 MB)

[#009] sha256:63f3a14140ce8e96641eb0336f17ebe2318b4dd80abfefb90ee5e48424259148 - 0.11% (1.33 MB)

[#010] sha256:b3818959d2346db4e263e53a57668f54a6e3cb6fcca7612f3dd7ac8c5ea43a46 - 0.0% (14.9 KB)

[#011] sha256:efb08b1b2506aad616dc6cecb97ccf315445cdb46dab88556cf6a93f4726757d - 1.22% (14.9 MB)

[#012] sha256:876e949c13fe8cfa0a50ca239f557e9fba4ec86e69da1f84777bc081d3624b79 - 0.0% (33.4 KB)

[#013] sha256:fff00a1cae101c28806de92ee231ea68768aaf20fc5da1c1ab647788e78978d0 - 1.3% (15.8 MB)

[#014] sha256:3f39eac27ead2d8029d5feec65888018f985f43815a232fd956ccd7452b7d343 - 0.02% (235 KB)

[#015] sha256:f20c4de15d1bc2eb28438290062451c7baf62c226cd59233639eb70d257f01e5 - 0.0% (17.9 KB)

[#016] sha256:116a574fedbfe29897b8e93efd709fdc3d76328a879aa47980db55e8ba8b6c57 - 0.0% (3.71 KB)

[#017] sha256:21683816a83d1b3e2b6605ce9ea1cc78dff0f507a52e204024fd5a758a9a21c0 - 17.9% (218 MB)

[#018] sha256:79ba1360480cbbcfc8fef5cfa01150cf38856320e582ae7f57bf490afb7862c7 - 0.0% (3.28 KB)

[#019] sha256:b9ffaae07ce5c9d70dcf6a1e20b628a1e5ef6bbbd4a6733cc353064522795dbe - 0.01% (85.7 KB)

[#020] sha256:e39968304860d23a5de633afe91a519fb9dfe8e25d0e38bfc2381afd39e8ffcb - 2.5% (30.4 MB)

[#021] sha256:06322ee5b96e1a3d363c46b45bdecfdcbd67a3a3e7a9cef5da4a623af768d902 - 0.02% (229 KB)


History
2026-02-10 16:49:54 UTC

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

2026-02-10 16:49:54 UTC

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

2026-02-10 16:49:54 UTC

/bin/sh -c #(nop) LABEL org.opencontainers.image.ref.name=ubuntu

2026-02-10 16:49:54 UTC

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

2026-02-10 16:49:56 UTC

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

2026-02-10 16:49:57 UTC

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

2026-02-17 20:20:27 UTC (buildkit.dockerfile.v0)

ENV JAVA_HOME=/opt/java/openjdk

2026-02-17 20:20:27 UTC (buildkit.dockerfile.v0)

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

2026-02-17 20:20:27 UTC (buildkit.dockerfile.v0)

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

2026-02-17 20:20:27 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-02-17 20:20:27 UTC (buildkit.dockerfile.v0)

ENV JAVA_VERSION=jdk-25.0.2+10

2026-02-17 20:20:45 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in amd64) ESUM='d6c89e08f42be94cd55eab20190958a35b993625018a3ac59cb3d16d8445cf98'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jre_x64_linux_hotspot_25.0.2_10.tar.gz'; ;; arm64) ESUM='e90ad4a618a0228a2126e7c6abfbc0729e2649d7d72cef45fd640239866eb050'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jre_aarch64_linux_hotspot_25.0.2_10.tar.gz'; ;; ppc64el) ESUM='1cc773ab86cbdbb02732398ad4550950db859fb08f8eb6548c8c5e188f697455'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jre_ppc64le_linux_hotspot_25.0.2_10.tar.gz'; ;; riscv64) ESUM='0be0aa0a9578d229c2de2e9e05741d1c0726185a2017f8ce2249989f79dc9562'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jre_riscv64_linux_hotspot_25.0.2_10.tar.gz'; ;; s390x) ESUM='ccb977223490643318230b53107aaa23c136d2793b5174dc38d4b0daab9a18e3'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jre_s390x_linux_hotspot_25.0.2_10.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-02-17 20:20:45 UTC (buildkit.dockerfile.v0)

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

2026-02-17 20:20:45 UTC (buildkit.dockerfile.v0)

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

2026-02-17 20:20:45 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/__cacert_entrypoint.sh"]

2026-03-13 01:50:45 UTC (buildkit.dockerfile.v0)

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

2026-03-13 01:50:45 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-03-13 01:50:45 UTC (buildkit.dockerfile.v0)

ARG UNOSERVER_VERSION=3.6

2026-03-13 01:50:45 UTC (buildkit.dockerfile.v0)

RUN |1 UNOSERVER_VERSION=3.6 /bin/bash -o pipefail -c set -eux; apt-get update; 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 ffmpeg poppler-utils fontforge gosu unpaper pngquant 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 tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-por tesseract-ocr-chi-sim libcairo2 libpango-1.0-0 libpangoft2-1.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'; 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/liblangtag/* /usr/share/tcltk/* /usr/share/python-wheels/*; 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; 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; 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/numpy /usr/lib/python3/dist-packages/fontTools /usr/lib/python3/dist-packages/PIL; 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/*.md5sums /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 -name '*CJK*' ! -name '*Regular*' -type f -delete 2>/dev/null || true; rm -rf /var/cache/fontconfig/* /tmp/* # buildkit

2026-03-13 01:50:46 UTC (buildkit.dockerfile.v0)

COPY /opt/venv /opt/venv # buildkit

2026-03-13 01:50:49 UTC (buildkit.dockerfile.v0)

RUN |1 UNOSERVER_VERSION=3.6 /bin/bash -o pipefail -c set -eux; ln -sf /opt/venv/bin/unoconvert /usr/local/bin/unoconvert; ln -sf /opt/venv/bin/unoserver /usr/local/bin/unoserver; /opt/venv/bin/python -c "import cv2; import ocrmypdf; import weasyprint; print('Python libs verified')"; find /opt/venv -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true; find /opt/venv \( -name '*.pyc' -o -name '*.pyi' \) -delete 2>/dev/null || true; rm -rf /opt/venv/lib/python*/site-packages/pip /opt/venv/lib/python*/site-packages/pip-*.dist-info /opt/venv/lib/python*/site-packages/setuptools /opt/venv/lib/python*/site-packages/setuptools-*.dist-info; # buildkit

2026-03-13 02:36:45 UTC (buildkit.dockerfile.v0)

COPY /opt/calibre /opt/calibre # buildkit

2026-03-13 02:36:08 UTC (buildkit.dockerfile.v0)

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

2026-03-13 02:36:08 UTC (buildkit.dockerfile.v0)

COPY /usr/local/bin/magick /usr/bin/magick # buildkit

2026-03-13 02:36:08 UTC (buildkit.dockerfile.v0)

COPY /usr/local/lib/libMagick* /usr/local/lib/ # buildkit

2026-03-13 02:31:22 UTC (buildkit.dockerfile.v0)

COPY /usr/local/etc/ImageMagick-7 /usr/local/etc/ImageMagick-7 # buildkit

2026-03-13 02:33:27 UTC (buildkit.dockerfile.v0)

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

2026-03-12 22:45:24 UTC (buildkit.dockerfile.v0)

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

2026-03-13 02:36:45 UTC (buildkit.dockerfile.v0)

RUN |1 UNOSERVER_VERSION=3.6 /bin/bash -o pipefail -c set -eux; ldconfig /usr/local/lib; find /opt/calibre -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true; # buildkit

2026-03-13 02:36:45 UTC (buildkit.dockerfile.v0)

ARG PUID=1000

2026-03-13 02:36:45 UTC (buildkit.dockerfile.v0)

ARG PGID=1000

2026-03-13 02:36:45 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.6 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; ln -sf /usr/sbin/gosu /usr/local/bin/su-exec # buildkit

2026-03-13 00:55:38 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /app/app/core/build/libs/*.jar /app.jar # buildkit

2026-03-13 00:21:10 UTC (buildkit.dockerfile.v0)

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

2026-03-12 22:43:10 UTC (buildkit.dockerfile.v0)

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

2026-03-13 00:54:05 UTC (buildkit.dockerfile.v0)

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

2026-03-13 02:36:48 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.6 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; chmod +x /scripts/*; mkdir -p /configs /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders /tmp/stirling-pdf/heap_dumps; mkdir -p /app; ln -s /logs /app/logs; ln -s /configs /app/configs; ln -s /customFiles /app/customFiles; ln -s /pipeline /app/pipeline; chown -R stirlingpdfuser:stirlingpdfgroup /home/stirlingpdfuser /configs /logs /customFiles /pipeline /tmp/stirling-pdf; chown -h stirlingpdfuser:stirlingpdfgroup /app/logs /app/configs /app/customFiles /app/pipeline; chown stirlingpdfuser:stirlingpdfgroup /app; chmod 1777 /tmp/stirling-pdf; fc-cache -f; find /opt/calibre -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true # buildkit

2026-03-13 02:36:48 UTC (buildkit.dockerfile.v0)

ARG VERSION_TAG=2.7.1

2026-03-13 02:36:48 UTC (buildkit.dockerfile.v0)

ENV VERSION_TAG=2.7.1 STIRLING_AOT_ENABLE=false STIRLING_JVM_PROFILE=balanced _JVM_OPTS_BALANCED=-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4m -XX:G1PeriodicGCInterval=60000 -XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders -XX:+ExplicitGCInvokesConcurrent -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true _JVM_OPTS_PERFORMANCE=-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational -XX:+UseCompactObjectHeaders -XX:+UseStringDeduplication -XX:+AlwaysPreTouch -XX:+ExplicitGCInvokesConcurrent -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true JAVA_CUSTOM_OPTS= HOME=/home/stirlingpdfuser PUID=1000 PGID=1000 UMASK=022 FAT_DOCKER=true INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false PATH=/opt/venv/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin UNO_PATH=/usr/lib/libreoffice/program LIBREOFFICE_BIN_PATH=/usr/lib/libreoffice/program/soffice.bin STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf TMPDIR=/tmp/stirling-pdf TEMP=/tmp/stirling-pdf TMP=/tmp/stirling-pdf QTWEBENGINE_CHROMIUM_FLAGS=--no-sandbox --disable-gpu --disable-software-rasterizer DBUS_SESSION_BUS_ADDRESS=/dev/null

2026-03-13 02:36:48 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.title=Stirling-PDF Fat org.opencontainers.image.description=Fat version with extra fonts for air-gapped environments, includes 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=2.7.1 org.opencontainers.image.keywords=PDF, manipulation, fat, air-gapped, API, Spring Boot, React

2026-03-13 02:36:48 UTC (buildkit.dockerfile.v0)

EXPOSE [8080/tcp]

2026-03-13 02:36:48 UTC (buildkit.dockerfile.v0)

STOPSIGNAL SIGTERM

2026-03-13 02:36:48 UTC (buildkit.dockerfile.v0)

HEALTHCHECK &{["CMD-SHELL" "curl -f http://localhost:8080/api/v1/info/status || exit 1"] "30s" "10s" "40s" "0s" '\x03'}

2026-03-13 02:36:48 UTC (buildkit.dockerfile.v0)

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

2026-03-13 02:36:48 UTC (buildkit.dockerfile.v0)

CMD []

Details
Created

2026-03-13 02:31:32 UTC

Size

1.15 GB

Content Digest
Labels
  • maintainer
    Stirling-Tools
  • org.opencontainers.image.authors
    Stirling-Tools
  • org.opencontainers.image.created
    2026-03-13T00:54:03.149Z
  • 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, fat, air-gapped, API, Spring Boot, React
  • org.opencontainers.image.licenses
    NOASSERTION
  • org.opencontainers.image.ref.name
    ubuntu
  • org.opencontainers.image.revision
    9969fe5a6db7671e0b1d7a29f60f41541ed0d9b6
  • 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
    2.7.1-fat

Environment
DBUS_SESSION_BUS_ADDRESS

/dev/null

DEBIAN_FRONTEND

noninteractive

FAT_DOCKER

true

HOME

/home/stirlingpdfuser

INSTALL_BOOK_AND_ADVANCED_HTML_OPS

false

JAVA_CUSTOM_OPTS

JAVA_HOME

/opt/java/openjdk

JAVA_VERSION

jdk-25.0.2+10

LANG

C.UTF-8

LANGUAGE

en_US:en

LC_ALL

C.UTF-8

LIBREOFFICE_BIN_PATH

/usr/lib/libreoffice/program/soffice.bin

PATH

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

PGID

1000

PUID

1000

QTWEBENGINE_CHROMIUM_FLAGS

--no-sandbox --disable-gpu --disable-software-rasterizer

STIRLING_AOT_ENABLE

false

STIRLING_JVM_PROFILE

balanced

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

UNO_PATH

/usr/lib/libreoffice/program

VERSION_TAG

2.7.1

_JVM_OPTS_BALANCED

-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4m -XX:G1PeriodicGCInterval=60000 -XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders -XX:+ExplicitGCInvokesConcurrent -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true

_JVM_OPTS_PERFORMANCE

-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational -XX:+UseCompactObjectHeaders -XX:+UseStringDeduplication -XX:+AlwaysPreTouch -XX:+ExplicitGCInvokesConcurrent -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true


Layers

[#000] sha256:66a4bbbfab887561d75f1fdb3c6221c974346f82c9229f5ef99f96b7e6c25704 - 2.34% (27.5 MB)

[#001] sha256:1dc53e94bca397afe1821661a3a7edf58b275b328d8ee7c799be1e5b6ffc6cf9 - 0.93% (10.9 MB)

[#002] sha256:6e3b7a932d578bfc8ff2eb1d14e72aa88210fde1d7d304880764fd89f2629d4a - 5.0% (58.8 MB)

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

[#004] sha256:d4050c6fc60221d10adf27580cac692e88372fd84042a37ab06a9a51ffdf6729 - 0.0% (2.23 KB)

[#005] sha256:bafff3448f732f18b91fb321520aa7b484e45c1bfbf6f04527a5cb615173e18d - 41.44% (487 MB)

[#006] sha256:fc250d70daab7232670da3cb50e7e17d71bc7cbe4ac2e406902d466f7ca64085 - 9.47% (111 MB)

[#007] sha256:1fa7e6124c9c66663447715f4d676093b00993613be88467f6509ac70c96dad4 - 0.18% (2.1 MB)

[#008] sha256:ed86823edfd1cc5ac74c57e39c35cc4a64cbb9d7f3cb698ad951641ae014fbb2 - 16.78% (197 MB)

[#009] sha256:058810986c14e55c25b6dc17cf1ef86a7939efa8eaa96ecd57f4081177f223f1 - 0.11% (1.25 MB)

[#010] sha256:b008a404a7345271fbee7a3ea500d7f0797b5f015a5a9dd50100564c76aefe40 - 0.0% (15.6 KB)

[#011] sha256:25cac808ef7dfaaa34de190197f43d2025490b26840dced95646459007f7e521 - 1.2% (14.2 MB)

[#012] sha256:876e949c13fe8cfa0a50ca239f557e9fba4ec86e69da1f84777bc081d3624b79 - 0.0% (33.4 KB)

[#013] sha256:a015d50e4619f5746f247bce579b242a108b4fb581ad86959acdb26c4b1b0ae2 - 1.34% (15.8 MB)

[#014] sha256:3f39eac27ead2d8029d5feec65888018f985f43815a232fd956ccd7452b7d343 - 0.02% (235 KB)

[#015] sha256:e1abf7e488bfe2c36342642c80038fda5eaf92fd8fc68b6e435c87fc4eee9993 - 0.0% (18.1 KB)

[#016] sha256:dfe0da668d7f444720c2a16b51d4f96d5eac377aaab7973153f4a8d519537a2a - 0.0% (3.71 KB)

[#017] sha256:9463277dcdffe9237ebe57162c0b662babb3e27a8cbc12f1e14fca7cb99ce2fe - 18.56% (218 MB)

[#018] sha256:79ba1360480cbbcfc8fef5cfa01150cf38856320e582ae7f57bf490afb7862c7 - 0.0% (3.28 KB)

[#019] sha256:b9ffaae07ce5c9d70dcf6a1e20b628a1e5ef6bbbd4a6733cc353064522795dbe - 0.01% (85.7 KB)

[#020] sha256:e39968304860d23a5de633afe91a519fb9dfe8e25d0e38bfc2381afd39e8ffcb - 2.59% (30.4 MB)

[#021] sha256:3d2f970555f3e044edc88ac43b6a8e026e4ee612cb26a456a8248fa9ecf5302f - 0.02% (229 KB)


History
2026-02-10 16:52:26 UTC

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

2026-02-10 16:52:26 UTC

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

2026-02-10 16:52:27 UTC

/bin/sh -c #(nop) LABEL org.opencontainers.image.ref.name=ubuntu

2026-02-10 16:52:27 UTC

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

2026-02-10 16:52:29 UTC

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

2026-02-10 16:52:29 UTC

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

2026-02-17 20:19:59 UTC (buildkit.dockerfile.v0)

ENV JAVA_HOME=/opt/java/openjdk

2026-02-17 20:19:59 UTC (buildkit.dockerfile.v0)

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

2026-02-17 20:19:59 UTC (buildkit.dockerfile.v0)

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

2026-02-17 20:19:59 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-02-17 20:19:59 UTC (buildkit.dockerfile.v0)

ENV JAVA_VERSION=jdk-25.0.2+10

2026-02-17 20:20:18 UTC (buildkit.dockerfile.v0)

RUN /bin/sh -c set -eux; ARCH="$(dpkg --print-architecture)"; case "${ARCH}" in amd64) ESUM='d6c89e08f42be94cd55eab20190958a35b993625018a3ac59cb3d16d8445cf98'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jre_x64_linux_hotspot_25.0.2_10.tar.gz'; ;; arm64) ESUM='e90ad4a618a0228a2126e7c6abfbc0729e2649d7d72cef45fd640239866eb050'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jre_aarch64_linux_hotspot_25.0.2_10.tar.gz'; ;; ppc64el) ESUM='1cc773ab86cbdbb02732398ad4550950db859fb08f8eb6548c8c5e188f697455'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jre_ppc64le_linux_hotspot_25.0.2_10.tar.gz'; ;; riscv64) ESUM='0be0aa0a9578d229c2de2e9e05741d1c0726185a2017f8ce2249989f79dc9562'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jre_riscv64_linux_hotspot_25.0.2_10.tar.gz'; ;; s390x) ESUM='ccb977223490643318230b53107aaa23c136d2793b5174dc38d4b0daab9a18e3'; BINARY_URL='https://github.com/adoptium/temurin25-binaries/releases/download/jdk-25.0.2%2B10/OpenJDK25U-jre_s390x_linux_hotspot_25.0.2_10.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-02-17 20:20:19 UTC (buildkit.dockerfile.v0)

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

2026-02-17 20:20:19 UTC (buildkit.dockerfile.v0)

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

2026-02-17 20:20:19 UTC (buildkit.dockerfile.v0)

ENTRYPOINT ["/__cacert_entrypoint.sh"]

2026-03-13 01:06:46 UTC (buildkit.dockerfile.v0)

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

2026-03-13 01:06:46 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-03-13 01:06:46 UTC (buildkit.dockerfile.v0)

ARG UNOSERVER_VERSION=3.6

2026-03-13 01:06:46 UTC (buildkit.dockerfile.v0)

RUN |1 UNOSERVER_VERSION=3.6 /bin/bash -o pipefail -c set -eux; apt-get update; 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 ffmpeg poppler-utils fontforge gosu unpaper pngquant 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 tesseract-ocr tesseract-ocr-eng tesseract-ocr-deu tesseract-ocr-fra tesseract-ocr-por tesseract-ocr-chi-sim libcairo2 libpango-1.0-0 libpangoft2-1.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'; 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/liblangtag/* /usr/share/tcltk/* /usr/share/python-wheels/*; 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; 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; 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/numpy /usr/lib/python3/dist-packages/fontTools /usr/lib/python3/dist-packages/PIL; 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/*.md5sums /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 -name '*CJK*' ! -name '*Regular*' -type f -delete 2>/dev/null || true; rm -rf /var/cache/fontconfig/* /tmp/* # buildkit

2026-03-13 01:18:39 UTC (buildkit.dockerfile.v0)

COPY /opt/venv /opt/venv # buildkit

2026-03-13 01:19:13 UTC (buildkit.dockerfile.v0)

RUN |1 UNOSERVER_VERSION=3.6 /bin/bash -o pipefail -c set -eux; ln -sf /opt/venv/bin/unoconvert /usr/local/bin/unoconvert; ln -sf /opt/venv/bin/unoserver /usr/local/bin/unoserver; /opt/venv/bin/python -c "import cv2; import ocrmypdf; import weasyprint; print('Python libs verified')"; find /opt/venv -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true; find /opt/venv \( -name '*.pyc' -o -name '*.pyi' \) -delete 2>/dev/null || true; rm -rf /opt/venv/lib/python*/site-packages/pip /opt/venv/lib/python*/site-packages/pip-*.dist-info /opt/venv/lib/python*/site-packages/setuptools /opt/venv/lib/python*/site-packages/setuptools-*.dist-info; # buildkit

2026-03-13 01:10:01 UTC (buildkit.dockerfile.v0)

COPY /opt/calibre /opt/calibre # buildkit

2026-03-13 02:31:22 UTC (buildkit.dockerfile.v0)

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

2026-03-13 02:31:22 UTC (buildkit.dockerfile.v0)

COPY /usr/local/bin/magick /usr/bin/magick # buildkit

2026-03-13 02:31:23 UTC (buildkit.dockerfile.v0)

COPY /usr/local/lib/libMagick* /usr/local/lib/ # buildkit

2026-03-13 02:31:22 UTC (buildkit.dockerfile.v0)

COPY /usr/local/etc/ImageMagick-7 /usr/local/etc/ImageMagick-7 # buildkit

2026-03-13 01:47:49 UTC (buildkit.dockerfile.v0)

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

2026-03-12 22:45:24 UTC (buildkit.dockerfile.v0)

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

2026-03-13 02:31:23 UTC (buildkit.dockerfile.v0)

RUN |1 UNOSERVER_VERSION=3.6 /bin/bash -o pipefail -c set -eux; ldconfig /usr/local/lib; find /opt/calibre -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true; # buildkit

2026-03-13 02:31:23 UTC (buildkit.dockerfile.v0)

ARG PUID=1000

2026-03-13 02:31:23 UTC (buildkit.dockerfile.v0)

ARG PGID=1000

2026-03-13 02:31:24 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.6 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; ln -sf /usr/sbin/gosu /usr/local/bin/su-exec # buildkit

2026-03-13 01:06:23 UTC (buildkit.dockerfile.v0)

COPY --chown=1000:1000 /app/app/core/build/libs/*.jar /app.jar # buildkit

2026-03-13 00:21:10 UTC (buildkit.dockerfile.v0)

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

2026-03-12 22:43:10 UTC (buildkit.dockerfile.v0)

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

2026-03-13 00:54:05 UTC (buildkit.dockerfile.v0)

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

2026-03-13 02:31:32 UTC (buildkit.dockerfile.v0)

RUN |3 UNOSERVER_VERSION=3.6 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; chmod +x /scripts/*; mkdir -p /configs /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders /tmp/stirling-pdf/heap_dumps; mkdir -p /app; ln -s /logs /app/logs; ln -s /configs /app/configs; ln -s /customFiles /app/customFiles; ln -s /pipeline /app/pipeline; chown -R stirlingpdfuser:stirlingpdfgroup /home/stirlingpdfuser /configs /logs /customFiles /pipeline /tmp/stirling-pdf; chown -h stirlingpdfuser:stirlingpdfgroup /app/logs /app/configs /app/customFiles /app/pipeline; chown stirlingpdfuser:stirlingpdfgroup /app; chmod 1777 /tmp/stirling-pdf; fc-cache -f; find /opt/calibre -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true # buildkit

2026-03-13 02:31:32 UTC (buildkit.dockerfile.v0)

ARG VERSION_TAG=2.7.1

2026-03-13 02:31:32 UTC (buildkit.dockerfile.v0)

ENV VERSION_TAG=2.7.1 STIRLING_AOT_ENABLE=false STIRLING_JVM_PROFILE=balanced _JVM_OPTS_BALANCED=-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:G1HeapRegionSize=4m -XX:G1PeriodicGCInterval=60000 -XX:+UseStringDeduplication -XX:+UseCompactObjectHeaders -XX:+ExplicitGCInvokesConcurrent -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true _JVM_OPTS_PERFORMANCE=-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UseShenandoahGC -XX:ShenandoahGCMode=generational -XX:+UseCompactObjectHeaders -XX:+UseStringDeduplication -XX:+AlwaysPreTouch -XX:+ExplicitGCInvokesConcurrent -Dspring.threads.virtual.enabled=true -Djava.awt.headless=true JAVA_CUSTOM_OPTS= HOME=/home/stirlingpdfuser PUID=1000 PGID=1000 UMASK=022 FAT_DOCKER=true INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false PATH=/opt/venv/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin UNO_PATH=/usr/lib/libreoffice/program LIBREOFFICE_BIN_PATH=/usr/lib/libreoffice/program/soffice.bin STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf TMPDIR=/tmp/stirling-pdf TEMP=/tmp/stirling-pdf TMP=/tmp/stirling-pdf QTWEBENGINE_CHROMIUM_FLAGS=--no-sandbox --disable-gpu --disable-software-rasterizer DBUS_SESSION_BUS_ADDRESS=/dev/null

2026-03-13 02:31:32 UTC (buildkit.dockerfile.v0)

LABEL org.opencontainers.image.title=Stirling-PDF Fat org.opencontainers.image.description=Fat version with extra fonts for air-gapped environments, includes 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=2.7.1 org.opencontainers.image.keywords=PDF, manipulation, fat, air-gapped, API, Spring Boot, React

2026-03-13 02:31:32 UTC (buildkit.dockerfile.v0)

EXPOSE [8080/tcp]

2026-03-13 02:31:32 UTC (buildkit.dockerfile.v0)

STOPSIGNAL SIGTERM

2026-03-13 02:31:32 UTC (buildkit.dockerfile.v0)

HEALTHCHECK &{["CMD-SHELL" "curl -f http://localhost:8080/api/v1/info/status || exit 1"] "30s" "10s" "40s" "0s" '\x03'}

2026-03-13 02:31:32 UTC (buildkit.dockerfile.v0)

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

2026-03-13 02:31:32 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