镜像构建历史
# 2026-04-24 22:10:24 0.00B 设置默认要执行的命令
CMD []
# 2026-04-24 22:10:24 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "/scripts/init.sh"]
# 2026-04-24 22:10:24 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-04-24 22:10:24 0.00B 设置停止容器时发送的系统调用信号
STOPSIGNAL SIGTERM
# 2026-04-24 22:10:24 0.00B 声明容器运行时监听的端口
EXPOSE [8080/tcp]
# 2026-04-24 22:10:24 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.10.0 org.opencontainers.image.keywords=PDF, manipulation, fat, air-gapped, API, Spring Boot, React
# 2026-04-24 22:10:24 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.10.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-04-24 22:10:24 7.00B 执行命令并创建新的镜像层
RUN |1 VERSION_TAG=2.10.0 /bin/bash -o pipefail -c echo "${VERSION_TAG:-dev}" > /etc/stirling_version # buildkit
# 2026-04-24 22:10:24 832.12KB 执行命令并创建新的镜像层
RUN |1 VERSION_TAG=2.10.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-04-24 22:10:22 52.32MB 复制新文件或目录到容器中
COPY app/core/src/main/resources/static/fonts/*.ttf /usr/share/fonts/truetype/ # buildkit
# 2026-04-15 22:35:36 333.84KB 复制新文件或目录到容器中
COPY --chown=1000:1000 scripts/ /scripts/ # buildkit
# 2026-04-14 07:45:39 3.36KB 复制新文件或目录到容器中
COPY --chown=1000:1000 /app/build/libs/restart-helper.jar /restart-helper.jar # buildkit
# 2026-04-24 22:10:22 93.69MB 复制新文件或目录到容器中
COPY --chown=1000:1000 /layers/application/ /app/ # buildkit
# 2026-04-14 07:45:54 0.00B 复制新文件或目录到容器中
COPY --chown=1000:1000 /layers/snapshot-dependencies/ /app/ # buildkit
# 2026-04-14 07:45:54 0.00B 复制新文件或目录到容器中
COPY --chown=1000:1000 /layers/spring-boot-loader/ /app/ # buildkit
# 2026-04-14 07:45:54 154.66MB 复制新文件或目录到容器中
COPY --chown=1000:1000 /layers/dependencies/ /app/ # buildkit
# 2026-04-24 22:06:57 0.00B 设置工作目录为/app
WORKDIR /app
# 2026-04-24 22:06:57 0.00B 定义构建参数
ARG VERSION_TAG=2.10.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:6b6b6408aa11044bcddcf33e52c3d23a74ff0e468a88f2c395480d63617ddf92",
"RepoTags": [
"stirlingtools/stirling-pdf:2.10.0-fat",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/stirlingtools/stirling-pdf:2.10.0-fat"
],
"RepoDigests": [
"stirlingtools/stirling-pdf@sha256:ae61bf189cdb2ae691be80d97e8ec62ec1fbae710f3fb5c3b9f3bcfb6ef8bafc",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/stirlingtools/stirling-pdf@sha256:051a97e1aedfb52493a0fb7988edfc98d3c4f93d2d32dfa69b5ac65c6479d619"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-04-24T14:10:24.914348899Z",
"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.10.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-04-24T14:06:36.378Z",
"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": "9f6d7750f276b7c0b9bfd98c9fcef1dc7048c870",
"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.10.0-fat"
},
"StopSignal": "SIGTERM",
"Shell": [
"/bin/bash",
"-o",
"pipefail",
"-c"
]
},
"Architecture": "amd64",
"Os": "linux",
"Size": 2197892419,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/a8eb3dd48b1ad069ca2cdb43a80c643767f3c3e68594db750d3388febaa6f7eb/diff:/var/lib/docker/overlay2/03ad9a89674d8df90a26a19edfe623d361ee356df0f5f84650913271c79c97cc/diff:/var/lib/docker/overlay2/5f043f169ea94bc1dc2f96538e3ecc4699301e7120d347bfe663a88fa48f01a3/diff:/var/lib/docker/overlay2/99d993eecac20d68a4235372afe807878ce61a61f50ea57dde5da13a9f637495/diff:/var/lib/docker/overlay2/c0b029348fa5b95e0dc48ab6b99664439aec77bed9eec694a0b4665fab9a60a2/diff:/var/lib/docker/overlay2/c869292999eacee77b7a1c446c0898946e775f0ff60f7cee9a49aa4285464c31/diff:/var/lib/docker/overlay2/191c585f1051448839533fc11a67112a8641d89b9665f0c3e1056a1fc1620621/diff:/var/lib/docker/overlay2/b294e9d4fcf6fa0d367f8696e584a45eaba4d38fca8d2cf843f9eab5360f6857/diff:/var/lib/docker/overlay2/4b7823874071c8171dc97a9acd9c8705873e41a39eb174061cb510942aa54ccc/diff:/var/lib/docker/overlay2/a8ad7c7ca1f3e70f1f48712e817cc31c9747495a4b320abe40d6c2d4e818e489/diff:/var/lib/docker/overlay2/8bffcbdbb2b1f2b11834eb001088b2b99546d4aa721a8ae3c9e7578e50fb477c/diff:/var/lib/docker/overlay2/35723c922bafd0ef205d8e3c875027e1331642afcfd3375bf9d36a083416e4d3/diff:/var/lib/docker/overlay2/53296bdc1210747bac9ff8dc95ff32004403997415d57ea98874692984bdb312/diff:/var/lib/docker/overlay2/ae96b68f3230d37cf2d47db93f3b7af7373ae921ddf848490e7e3904141f179b/diff:/var/lib/docker/overlay2/cdb97443dd5b930683b5996f0139becb12890521c1c970302945c362d9a938f8/diff:/var/lib/docker/overlay2/a2d21994f488140e713338c88bcff60f545b70df9dc0ad42137d60b74b9c5642/diff:/var/lib/docker/overlay2/8bf2ea66db8eeea5de875212e67357e79b855b6d222bf8acaaf55b2b4103f90f/diff:/var/lib/docker/overlay2/80c0d49e5248e3f82e7cf440996bc375830f3d4f3095baa8880d58515fb01bfe/diff:/var/lib/docker/overlay2/0a89d7cb20e6ed00bcb65031a577b5b5ae346b99a79a16aa669b9b51a36d73b3/diff:/var/lib/docker/overlay2/c9073e86c5b086a9dd59233988ee5f4d70660e2ab9ef4a5947a0906e57328428/diff:/var/lib/docker/overlay2/2ecc043346568002a0b90d0c727f98eed4cdf6735dc4005bd64e80ef1f1ba9e9/diff:/var/lib/docker/overlay2/db97c9725c0ce77560c304f99dbbfc346554f262733216dd875c2787e39731c0/diff:/var/lib/docker/overlay2/11560580c6959f2aacbf1012448cbaa3b3412cddb3f6afb8d5a2e3891074c08a/diff:/var/lib/docker/overlay2/ff75a2a61a7f1b74604f3d6752a2711fd75850a5323dc3dba2b86863a709ce64/diff:/var/lib/docker/overlay2/ce05d2cd16ba3919041e133a958df1acf0ca5cb6ac9c21239b427d9822d67eb6/diff",
"MergedDir": "/var/lib/docker/overlay2/62b194d2762091c1461181a7b46926007686b65028bb3eba305f0ba548dcf354/merged",
"UpperDir": "/var/lib/docker/overlay2/62b194d2762091c1461181a7b46926007686b65028bb3eba305f0ba548dcf354/diff",
"WorkDir": "/var/lib/docker/overlay2/62b194d2762091c1461181a7b46926007686b65028bb3eba305f0ba548dcf354/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:2fbdc2786634705d9de84c5a82f36756252ab3b53ff4cc1cdccf18aa1f1773be",
"sha256:66fc7c1490203d8a5370ea0ca2be00ed032fedeb65ba9b70417d7bc49124b57b",
"sha256:47bb3234e856601324f2c787ae45d244276104e5ec5fc0a07e7fed910411486b",
"sha256:47bb3234e856601324f2c787ae45d244276104e5ec5fc0a07e7fed910411486b",
"sha256:c1c79e87160b2dd144cbe740a3c20f2fcbd8d94a6c79c7175b4e112a7a5f1671",
"sha256:4848b0decbc02696b21f73182c83691fde60d035295f8208ec8f0684fbaa062c",
"sha256:beeba649d3d205d823303e43a6ba128fbb11f283f5b8b973b3a50b52e0d77461",
"sha256:10947c6590161c15df480d57373c18b9be011376989e6274c4d89b8f58e209e6",
"sha256:f9535a2b41a572fb5340dab5ec182ea911ad79de35f274ff330fade4547c7241",
"sha256:a571684280a379782367e2eefbd188a086d3d7f2f23c52b3301149da84795683"
]
},
"Metadata": {
"LastTagTime": "2026-04-29T16:44:14.714930491+08:00"
}
}