镜像构建历史
# 2026-05-19 19:54:53 0.00B 设置默认要执行的命令
CMD []
# 2026-05-19 19:54:53 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "/scripts/init.sh"]
# 2026-05-19 19:54:53 0.00B 指定检查容器健康状态的命令
HEALTHCHECK &{["CMD-SHELL" "curl -fs --max-time 10 http://localhost:8080${SYSTEM_ROOTURIPATH:-''}/api/v1/info/status || exit 1"] "30s" "15s" "2m0s" "0s" '\x05'}
# 2026-05-19 19:54:53 0.00B 设置停止容器时发送的系统调用信号
STOPSIGNAL SIGTERM
# 2026-05-19 19:54:53 0.00B 声明容器运行时监听的端口
EXPOSE [8080/tcp]
# 2026-05-19 19:54:53 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.11.0 org.opencontainers.image.keywords=PDF, manipulation, fat, air-gapped, API, Spring Boot, React
# 2026-05-19 19:54:53 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.11.0 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-05-19 19:54:53 7.00B 执行命令并创建新的镜像层
RUN |1 VERSION_TAG=2.11.0 /bin/bash -o pipefail -c echo "${VERSION_TAG:-dev}" > /etc/stirling_version # buildkit
# 2026-05-19 19:54:53 835.77KB 执行命令并创建新的镜像层
RUN |1 VERSION_TAG=2.11.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; 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-05-19 19:54:50 52.32MB 复制新文件或目录到容器中
COPY app/core/src/main/resources/static/fonts/*.ttf /usr/share/fonts/truetype/ # buildkit
# 2026-05-19 19:49:23 339.45KB 复制新文件或目录到容器中
COPY --chown=1000:1000 scripts/ /scripts/ # buildkit
# 2026-05-19 19:54:34 3.36KB 复制新文件或目录到容器中
COPY --chown=1000:1000 /app/build/libs/restart-helper.jar /restart-helper.jar # buildkit
# 2026-05-19 19:54:50 94.11MB 复制新文件或目录到容器中
COPY --chown=1000:1000 /layers/application/ /app/ # buildkit
# 2026-05-19 19:54:50 0.00B 复制新文件或目录到容器中
COPY --chown=1000:1000 /layers/snapshot-dependencies/ /app/ # buildkit
# 2026-05-19 19:54:50 0.00B 复制新文件或目录到容器中
COPY --chown=1000:1000 /layers/spring-boot-loader/ /app/ # buildkit
# 2026-05-19 19:54:50 154.76MB 复制新文件或目录到容器中
COPY --chown=1000:1000 /layers/dependencies/ /app/ # buildkit
# 2026-05-19 19:49:40 0.00B 设置工作目录为/app
WORKDIR /app
# 2026-05-19 19:49:40 0.00B 定义构建参数
ARG VERSION_TAG=2.11.0
# 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:35b673b65980f99b2d87fa1c6938984a9f75f8fc7aa5fca0ff43cb8fe7c176a3",
"RepoTags": [
"stirlingtools/stirling-pdf:2.11.0-fat",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/stirlingtools/stirling-pdf:2.11.0-fat"
],
"RepoDigests": [
"stirlingtools/stirling-pdf@sha256:fc747128f97652a99318ae861f1cdd56abe9b105d1d62e07bff3c2d781ea595f",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/stirlingtools/stirling-pdf@sha256:36171f790e4b01fbcc95aa2617de8b8ba81e11c33e4f90a3e1f73cb752dcf003"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-05-19T11:54:53.311878362Z",
"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.11.0",
"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${SYSTEM_ROOTURIPATH:-''}/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-05-19T11:49:21.636Z",
"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": "f9fbc3780025837c505ae88f7483d57f66e02f80",
"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.11.0-fat"
},
"StopSignal": "SIGTERM",
"Shell": [
"/bin/bash",
"-o",
"pipefail",
"-c"
]
},
"Architecture": "amd64",
"Os": "linux",
"Size": 2198419237,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/c041a3f4238bf0a8e095966682660e1e6dc1347fff01ba799fca801b281d63d6/diff:/var/lib/docker/overlay2/e5eed5ad6d10d489b6c4731b43e9a401cbe74efee1e0e1dc09b951d5aff8ba3d/diff:/var/lib/docker/overlay2/ec35500f3c24802ba1a64542d430a0d28019a17410d297ab7a36826d21e4f3f6/diff:/var/lib/docker/overlay2/57b4fef4128abac2d91b31724cea226776dd4a3e927548a7588992dea227d11d/diff:/var/lib/docker/overlay2/ddfe7ec66c129d88bb22b08efa1d4a1ce1e062cf3ebd9d9d2bea826a247e13fb/diff:/var/lib/docker/overlay2/9f3dd940cf84d7d8cb8fcc5c7bce1b89452b8209c425975f8e14a9d17d4e37de/diff:/var/lib/docker/overlay2/fc30bd21a5ea386f031850005ab77de538e5fc24bf6ef086040c746727691b41/diff:/var/lib/docker/overlay2/3af7392029eb105e8c3f6d76b014a3085f306752eabb6cb91d4283c8a758cac7/diff:/var/lib/docker/overlay2/84b8af7e4fca6b346bdde4760b049c6d4acb8dc970c98b72d0d2b4bd31174321/diff:/var/lib/docker/overlay2/3deecbf8dd4b301936136c9d4da032cea84e7e7cf599fa0f0c64c9d11d54c64f/diff:/var/lib/docker/overlay2/35f5709104dd4aa14aaf0f5e35e4198ad3ddd111bbe7c37848d9e6e7857471b6/diff:/var/lib/docker/overlay2/6e8fc50fbc0f86a961b118566a93b4189aa1d0e595f9384ce7223c2671b1e294/diff:/var/lib/docker/overlay2/528285d67db6528d1773082921c8c03fffe75681b994f4c3024b01d4fd86fb8f/diff:/var/lib/docker/overlay2/35011886a9914681e1ecfb525fc1bfb41e680759a3a74ee452d674dd887e3cf5/diff:/var/lib/docker/overlay2/adee6c6e25ceb609598ea1f01090d82fe71279486e57011ddb1e6746eba352da/diff:/var/lib/docker/overlay2/fb04c111cdac27d3898b07615c28c5ff7ecaf99ef36c1082038ddae630c9f398/diff:/var/lib/docker/overlay2/686b7c5241339b75e269080f870ffe759bdb4c6b9a36837d3ad4343cbb0edb00/diff:/var/lib/docker/overlay2/a1eb832e26c7e318d6437ac192a0c186e865fc5707dc7f917b191e660b2fa8f3/diff:/var/lib/docker/overlay2/145d5a2c5c24226c4b99c05345442806ad4c647e2cd2ed4de4d1d9d17acea8c9/diff:/var/lib/docker/overlay2/595ac9437c80d3fabf6da86a25ecdc6cacff5a80faf8b557a2c936943f344e0f/diff:/var/lib/docker/overlay2/ee77d1775d05aac1b72af959aa54a3afe2b1f75bb0a46aca9ec270b55c103b9b/diff:/var/lib/docker/overlay2/57b6480f5053d294beb5a27b6295ec75f5747c3a53f2df7c40d21309912f01a1/diff:/var/lib/docker/overlay2/81f82ab2de8305ad704e72022bd68e02d0e6ac0eaaaa958422aa489cd8b06e3f/diff:/var/lib/docker/overlay2/762c9abeef71256e6ee3661d6a8a87a4d3cc83ca0b31f45e84db3dcf88b17a0d/diff:/var/lib/docker/overlay2/184d0899454993a078e66e340d2a69cf052184709f89ecbbc8e5d99e9f92a52a/diff",
"MergedDir": "/var/lib/docker/overlay2/75c88c5d2d1dc3776f032cbaa41dd82bac6a1f08faca442ea16a37b14bd35ea0/merged",
"UpperDir": "/var/lib/docker/overlay2/75c88c5d2d1dc3776f032cbaa41dd82bac6a1f08faca442ea16a37b14bd35ea0/diff",
"WorkDir": "/var/lib/docker/overlay2/75c88c5d2d1dc3776f032cbaa41dd82bac6a1f08faca442ea16a37b14bd35ea0/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:84fe2d6d848476523dc5155d574fc66d34051005ece8862c577f495b886ed586",
"sha256:3b1affdb02513a781dd97c0fbe2c1648a426f42dd0025c4dd451b52c91c19a46",
"sha256:928785059d7f9ef66725efef2830c317830b5a085daaad5a7753f38bf6817a52",
"sha256:928785059d7f9ef66725efef2830c317830b5a085daaad5a7753f38bf6817a52",
"sha256:fd616604d418e9b7996fb1904af51b38270f7e905617e675fc07c2d6361137bf",
"sha256:c9aa6e7b318345a9bbeabf598afc194fbb012e7786b51718740eb74888dc983c",
"sha256:8bb2477a9829bce0cf130cbaeaa2f39ecb1e6a53b939dcc830679cb5006a0fc4",
"sha256:647b8e128261bf7dae78ef061a0c3e9a4ba784ccd5bbf8605519c6ae547733b0",
"sha256:6821d7a47efe7e120882f1cc5451668a25a73a3abed9bfb009be7bf074191dc3",
"sha256:2c7c72980c5d5aa6b83c5d2030ab97021171c3d4e3f2d0289cc5cf7ad57d1a2a"
]
},
"Metadata": {
"LastTagTime": "2026-05-20T09:53:27.841587293+08:00"
}
}