镜像构建历史
# 2026-04-04 21:53:13 0.00B 设置默认要执行的命令
CMD []
# 2026-04-04 21:53:13 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "/scripts/init.sh"]
# 2026-04-04 21:53:13 0.00B 指定检查容器健康状态的命令
HEALTHCHECK &{["CMD-SHELL" "curl -fs --max-time 10 http://localhost:8080/api/v1/info/status || exit 1"] "30s" "15s" "2m0s" "0s" '\x05'}
# 2026-04-04 21:53:13 0.00B 设置停止容器时发送的系统调用信号
STOPSIGNAL SIGTERM
# 2026-04-04 21:53:13 0.00B 声明容器运行时监听的端口
EXPOSE [8080/tcp]
# 2026-04-04 21:53:13 0.00B 添加元数据标签
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.9.2 org.opencontainers.image.keywords=PDF, manipulation, fat, air-gapped, API, Spring Boot, React
# 2026-04-04 21:53:13 0.00B 设置环境变量 VERSION_TAG STIRLING_AOT_ENABLE STIRLING_JVM_PROFILE _JVM_OPTS_BALANCED -XX:HeapDumpPath -XX:MaxGCPauseMillis -XX:G1HeapRegionSize -XX:G1PeriodicGCInterval -Dspring.threads.virtual.enabled -Djava.awt.headless _JVM_OPTS_PERFORMANCE -XX:HeapDumpPath -XX:ShenandoahGCMode -Dspring.threads.virtual.enabled -Djava.awt.headless JAVA_CUSTOM_OPTS HOME PUID PGID UMASK FAT_DOCKER INSTALL_BOOK_AND_ADVANCED_HTML_OPS STIRLING_TEMPFILES_DIRECTORY TMPDIR TEMP TMP DBUS_SESSION_BUS_ADDRESS SAL_TMP
ENV VERSION_TAG=2.9.2 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 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-04-04 21:53:13 6.00B 执行命令并创建新的镜像层
RUN |1 VERSION_TAG=2.9.2 /bin/bash -o pipefail -c echo "${VERSION_TAG:-dev}" > /etc/stirling_version # buildkit
# 2026-04-04 21:53:13 838.97KB 执行命令并创建新的镜像层
RUN |1 VERSION_TAG=2.9.2 /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; chown -h stirlingpdfuser:stirlingpdfgroup /app/logs /app/configs /app/customFiles /app/pipeline; chown stirlingpdfuser:stirlingpdfgroup /app; chmod 750 /tmp/stirling-pdf; chmod 750 /tmp/stirling-pdf/heap_dumps; fc-cache -f # buildkit
# 2026-04-04 21:53:11 52.32MB 复制新文件或目录到容器中
COPY app/core/src/main/resources/static/fonts/*.ttf /usr/share/fonts/truetype/ # buildkit
# 2026-04-04 21:21:31 347.86KB 复制新文件或目录到容器中
COPY --chown=1000:1000 scripts/ /scripts/ # buildkit
# 2026-03-31 00:11:41 3.36KB 复制新文件或目录到容器中
COPY --chown=1000:1000 /app/build/libs/restart-helper.jar /restart-helper.jar # buildkit
# 2026-04-04 21:52:49 91.83MB 复制新文件或目录到容器中
COPY --chown=1000:1000 /layers/application/ /app/ # buildkit
# 2026-04-04 19:52:44 0.00B 复制新文件或目录到容器中
COPY --chown=1000:1000 /layers/snapshot-dependencies/ /app/ # buildkit
# 2026-04-04 19:52:44 0.00B 复制新文件或目录到容器中
COPY --chown=1000:1000 /layers/spring-boot-loader/ /app/ # buildkit
# 2026-04-03 20:31:02 154.66MB 复制新文件或目录到容器中
COPY --chown=1000:1000 /layers/dependencies/ /app/ # buildkit
# 2026-04-04 20:26:36 0.00B 设置工作目录为/app
WORKDIR /app
# 2026-04-04 20:26:36 0.00B 定义构建参数
ARG VERSION_TAG=2.9.2
# 2026-04-04 19:01:04 0.00B 添加元数据标签
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-04-04 19:01:04 555.94KB 执行命令并创建新的镜像层
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; fc-cache -f # buildkit
# 2026-04-04 19:01:02 0.00B 执行命令并创建新的镜像层
RUN |3 UNOSERVER_VERSION=3.6 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 /tmp/stirling-pdf/heap_dumps; chown -R stirlingpdfuser:stirlingpdfgroup /home/stirlingpdfuser /configs /logs /customFiles /pipeline /tmp/stirling-pdf; chmod 750 /tmp/stirling-pdf; chmod 750 /tmp/stirling-pdf/heap_dumps # buildkit
# 2026-04-04 19:01:02 10.54KB 执行命令并创建新的镜像层
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 # buildkit
# 2026-04-04 19:01:02 0.00B 定义构建参数
ARG PGID=1000
# 2026-04-04 19:01:02 0.00B 定义构建参数
ARG PUID=1000
# 2026-04-04 19:01:02 63.69KB 执行命令并创建新的镜像层
RUN |1 UNOSERVER_VERSION=3.6 /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-04-04 17:58:39 324.64MB 复制新文件或目录到容器中
COPY /opt/venv /opt/venv # buildkit
# 2026-04-04 19:00:23 814.06KB 复制新文件或目录到容器中
COPY /usr/local/share/ghostscript /usr/local/share/ghostscript # buildkit
# 2026-04-04 19:00:23 35.50MB 复制新文件或目录到容器中
COPY /usr/local/bin/gs /usr/local/bin/gs # buildkit
# 2026-04-04 18:51:53 7.98MB 复制新文件或目录到容器中
COPY /magick-export/ / # buildkit
# 2026-04-04 18:51:52 3.02MB 复制新文件或目录到容器中
COPY /usr/local/bin/qpdf /usr/bin/qpdf # buildkit
# 2026-04-04 19:00:59 469.41MB 复制新文件或目录到容器中
COPY /opt/calibre /opt/calibre # buildkit
# 2026-04-04 18:52:47 744.03MB 执行命令并创建新的镜像层
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 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 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-04-04 18:52:47 0.00B 定义构建参数
ARG UNOSERVER_VERSION=3.6
# 2026-04-04 18:52:47 0.00B 设置环境变量 DEBIAN_FRONTEND LANG LC_ALL TESS_BASE_PATH
ENV DEBIAN_FRONTEND=noninteractive LANG=C.UTF-8 LC_ALL=C.UTF-8 TESS_BASE_PATH=/usr/share/tesseract-ocr/5/tessdata
# 2026-04-04 18:52:47 0.00B
SHELL [/bin/bash -o pipefail -c]
# 2026-03-17 09:23:52 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/__cacert_entrypoint.sh"]
# 2026-03-17 09:23:52 5.31KB 复制新文件或目录到容器中
COPY --chmod=755 entrypoint.sh /__cacert_entrypoint.sh # buildkit
# 2026-03-17 09:23:52 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; echo "Verifying install ..."; echo "java --version"; java --version; echo "Complete." # buildkit
# 2026-03-17 09:23:52 199.38MB 执行命令并创建新的镜像层
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-03-17 09:23:33 0.00B 设置环境变量 JAVA_VERSION
ENV JAVA_VERSION=jdk-25.0.2+10
# 2026-03-17 09:23:33 32.50MB 执行命令并创建新的镜像层
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-03-17 09:23:33 0.00B 设置环境变量 LANG LANGUAGE LC_ALL
ENV LANG=en_US.UTF-8 LANGUAGE=en_US:en LC_ALL=en_US.UTF-8
# 2026-03-17 09:23:33 0.00B 设置环境变量 PATH
ENV PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-03-17 09:23:33 0.00B 设置环境变量 JAVA_HOME
ENV JAVA_HOME=/opt/java/openjdk
# 2026-02-24 01:17:56 0.00B
/bin/sh -c #(nop) CMD ["/bin/bash"]
# 2026-02-24 01:17:55 78.14MB
/bin/sh -c #(nop) ADD file:3f78aa860931e0853077f09eb31eddbeeef8a9dd70977305b4876aa176770721 in /
# 2026-02-24 01:17:53 0.00B
/bin/sh -c #(nop) LABEL org.opencontainers.image.version=24.04
# 2026-02-24 01:17:53 0.00B
/bin/sh -c #(nop) LABEL org.opencontainers.image.ref.name=ubuntu
# 2026-02-24 01:17:53 0.00B
/bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH
# 2026-02-24 01:17:53 0.00B
/bin/sh -c #(nop) ARG RELEASE
镜像信息
{
"Id": "sha256:a60fba0cc4706af786b23e08e69751361fa044315dad07eacb17ea11f6064f93",
"RepoTags": [
"stirlingtools/stirling-pdf:2.9.2-fat",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/stirlingtools/stirling-pdf:2.9.2-fat"
],
"RepoDigests": [
"stirlingtools/stirling-pdf@sha256:ebaa984c410681939837920c18d2cea8103b46d4961fe6ddc6b6498fa26590b2",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/stirlingtools/stirling-pdf@sha256:549088c31d26896cfda31f298d84ce9ad3b1a3dc0fea9dabe12345ef5e7a1eee"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-04-04T13:53:13.427832898Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8080/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"JAVA_HOME=/opt/java/openjdk",
"LANG=C.UTF-8",
"LANGUAGE=en_US:en",
"LC_ALL=C.UTF-8",
"JAVA_VERSION=jdk-25.0.2+10",
"DEBIAN_FRONTEND=noninteractive",
"TESS_BASE_PATH=/usr/share/tesseract-ocr/5/tessdata",
"VERSION_TAG=2.9.2",
"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",
"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"
],
"Cmd": null,
"Healthcheck": {
"Test": [
"CMD-SHELL",
"curl -fs --max-time 10 http://localhost:8080/api/v1/info/status || exit 1"
],
"Interval": 30000000000,
"Timeout": 15000000000,
"StartPeriod": 120000000000,
"Retries": 5
},
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": [
"tini",
"--",
"/scripts/init.sh"
],
"OnBuild": null,
"Labels": {
"maintainer": "Stirling-Tools",
"org.opencontainers.image.authors": "Stirling-Tools",
"org.opencontainers.image.created": "2026-04-04T13:52:38.466Z",
"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": "ebab5a4456e5c66ffdd1095b31326bb347703c83",
"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.9.2-fat"
},
"StopSignal": "SIGTERM",
"Shell": [
"/bin/bash",
"-o",
"pipefail",
"-c"
]
},
"Architecture": "amd64",
"Os": "linux",
"Size": 2196055420,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/9794c2d4e6f3b04a1ecea8a14dfbd9f7b95e2b46454410f80e6baf9ca1cae9ba/diff:/var/lib/docker/overlay2/536dd5b5f47695b7e085883582e0503538a7d6bf5e2d33a3a4e57c5c09b08aa1/diff:/var/lib/docker/overlay2/7859890f354a845bb275d0a0a20e1caa831c00a09e50779a4f12259e891d5507/diff:/var/lib/docker/overlay2/1bd10874c8a2f111c67ca5b29cab0d0a7646453a17cee525f26aff4b99270078/diff:/var/lib/docker/overlay2/a2c48b2656b74f5f6ee92253eb19fa9719fe85f5be8a585562687f6d30ed6f2c/diff:/var/lib/docker/overlay2/9c382de75294aaa63b21aaff9efde8be5a28c7ed2e9f5fa40bdb6f2acd3e84e8/diff:/var/lib/docker/overlay2/f5be9e0f2aeeff5c5b2fd9ddda47d4930565055cbd8783a8b098daaea6dbb758/diff:/var/lib/docker/overlay2/51254fa122f03986b3fe4bcd28f499e3af09715bf20d474424fc92e1a21a0eca/diff:/var/lib/docker/overlay2/143b5d3237cbc4a0cf7945243014d42aeb72870e96c656c60a5bb64801f34c5f/diff:/var/lib/docker/overlay2/d47f0abfda1bc21ca4accda601b1206addb0cb8c3b80cf745d402d0ff753c72e/diff:/var/lib/docker/overlay2/53ccfa016f3783723863f806c1b8ec528fe9e2f278cf9b68927c8f4496f8fff1/diff:/var/lib/docker/overlay2/b24c5f94ec61a163d52652652b91a7d57917acbcd6691bd0ecd602968d5286f0/diff:/var/lib/docker/overlay2/79a670eb021706130904e72e61d80325a6b780cb5e9b3f09634dc53aab670a20/diff:/var/lib/docker/overlay2/4046332922de94a64239dbde372192dc6b6d4903867bb778423f2e5d77d4069a/diff:/var/lib/docker/overlay2/254fc427cde16594797dcdff87634cb9466478f46571861beccd11fe50697d78/diff:/var/lib/docker/overlay2/7c3d18376a50b6edef4d4e61c75b37ebc71524224277701c521596912d21a9e5/diff:/var/lib/docker/overlay2/0a6060ec74f2f69de41eddf449edb297fa01c2c47175d37d33a2fcd535abb04a/diff:/var/lib/docker/overlay2/5c759042320d287ecd02e9222cafd92b86f4f75b653cbeb707a55f47a409eb81/diff:/var/lib/docker/overlay2/4b0436c15f7ead93b0c9f10fc2d532c4945e5916af76d3e619a35cc5fdf14825/diff:/var/lib/docker/overlay2/6e8648bce7497d1d5370d9f50166a72ce0ca0a8ecc9ddc090b60830864303faa/diff:/var/lib/docker/overlay2/895eac26698a7c362ef2898cc0293eb4c450a78386248c5c7f5e9335d3825a97/diff:/var/lib/docker/overlay2/9f94c6224b0c05cba821ebecd6696e7a8ffb2c23450acb425be4d407bf872e4a/diff:/var/lib/docker/overlay2/d55df890e0b698aa267224450ca7c1f60828ae07ef9ca3c0ead03fe3008d7213/diff:/var/lib/docker/overlay2/cecb1a9f85629d833379666e6c4b1ef5e6d49e417db76b8456d0000f3beb827b/diff:/var/lib/docker/overlay2/30f4b975c43c9949a625d61080129367889f63a1f0e1a1cd316ae165bf42bbb0/diff",
"MergedDir": "/var/lib/docker/overlay2/d130bda481538d2e9bf503d253b8bb213ac1462ba003cf3f9e63bdf12a4cc6ff/merged",
"UpperDir": "/var/lib/docker/overlay2/d130bda481538d2e9bf503d253b8bb213ac1462ba003cf3f9e63bdf12a4cc6ff/diff",
"WorkDir": "/var/lib/docker/overlay2/d130bda481538d2e9bf503d253b8bb213ac1462ba003cf3f9e63bdf12a4cc6ff/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:f2a7f072635332d307212e318e07284948b89f4167fce5c4d7c9cfb7590b74b6",
"sha256:0057c405ad133221d5f5565072357aca760dac1301706c3005f800342df438ec",
"sha256:73e48b55dd74eafa95b6435ab620164648eaa732ab098b69c6f5597493afbd36",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:c5bbc6d845ebbbb8bce594968d1905b71045e52df50becadde8cb986bac6b74b",
"sha256:0e8c026bd0db170e3cd62d610fd84e40c9e4835ed0f0848fd701d3f197b76740",
"sha256:6bf117fb004a2bec6d06408d8e4d3ecb91057894e9daffebcde9659cc02ee171",
"sha256:833233b4e09f6a9bda951d75e77931a8e24729858a20662d6f4057dc9e91ac61",
"sha256:e69dacfb93dfab1e9b59e7d840201a6f8617144dfb46ac11e6a8f39e8b8e406f",
"sha256:4084b39bd92635fcbd3e3c7fdf990bfae4d1a2b5484b05f12e520e2a1e796d61",
"sha256:7a4488eaa9bb9509341b22beb99b6aa8feda949dc63be3c6f83e030103c93c4b",
"sha256:83165bd71be1b9305d85ec5edd9a9ff7a207233127af828e158717ccb9f6e4f4",
"sha256:39f80695788988621f19f7c35616d0e000edbce8f91b55137c0cf98553ce7ff8",
"sha256:4cd3cbd3199d7b1bb3ef16c61b7d0cf90b77877c4b8da365f4e42ab93d19760a",
"sha256:0fa51a4d546bd0f2815d2e325e13888303bc7e59d329a097fb8ebf0be225409f",
"sha256:28fda8d00c059ba164915eb02b607513658b4d747da7872a9c987c1518e26367",
"sha256:f075e9508e37375cac7576023092e16305a5ada0437cf1550af4d06cc9905f06",
"sha256:94f2f4bead0d6b1c178698c5a9267ba47b33e2da415990d6cf03df7199522518",
"sha256:b56331129ba5ccebcfc2f17bcb6e2e4cc2a9430fad36016875344fc437a44170",
"sha256:b56331129ba5ccebcfc2f17bcb6e2e4cc2a9430fad36016875344fc437a44170",
"sha256:3e756da96b0ada6e8c9ca3721e6527a8c184a3574e12c44e6da12f425f9b5278",
"sha256:51611b1101a4496a86818821458fff8d1af367b1753bdf20699499d6876cdcee",
"sha256:ceb20cdaca45638c6062767b2d34fd658accf3ee18b65f6c34365b7d6ed23c43",
"sha256:fcbbebf33b90cdb25f99d012ef33490aad5eeb0aac13394edc7ff00e1c902e7f",
"sha256:b85c871a7fed99fbe1765905ccfb45e6e8e1ed30cea51c5039c758ebdd88431c",
"sha256:27b6d2bf598d3ecd5aeddbddb46d39982b8b81774697d1dc7e30f5182987bf9c"
]
},
"Metadata": {
"LastTagTime": "2026-04-07T14:46:42.540945225+08:00"
}
}