镜像构建历史
# 2026-01-10 06:52:29 0.00B 设置默认要执行的命令
CMD []
# 2026-01-10 06:52:29 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["tini" "--" "/scripts/init.sh"]
# 2026-01-10 06:52:29 0.00B 设置停止容器时发送的系统调用信号
STOPSIGNAL SIGTERM
# 2026-01-10 06:52:29 0.00B 声明容器运行时监听的端口
EXPOSE [8080/tcp]
# 2026-01-10 06:52:29 0.00B 设置环境变量 QT_QPA_PLATFORM QTWEBENGINE_CHROMIUM_FLAGS
ENV QT_QPA_PLATFORM=offscreen QTWEBENGINE_CHROMIUM_FLAGS=--disable-gpu --disable-dev-shm-usage
# 2026-01-10 06:52:29 1.07MB 执行命令并创建新的镜像层
RUN |3 PUID=1000 PGID=1000 VERSION_TAG=2.2.0 /bin/bash -o pipefail -c fc-cache -f -v # buildkit
# 2026-01-10 06:52:26 138.26MB 执行命令并创建新的镜像层
RUN |3 PUID=1000 PGID=1000 VERSION_TAG=2.2.0 /bin/bash -o pipefail -c set -eux; chmod +x /scripts/*; mkdir -p /configs /configs/heap_dumps /logs /customFiles /pipeline/watchedFolders /pipeline/finishedFolders /tmp/stirling-pdf; chown -R stirlingpdfuser:stirlingpdfgroup /home/stirlingpdfuser /configs /logs /customFiles /pipeline /tmp/stirling-pdf /app.jar /restart-helper.jar /usr/share/fonts/truetype /scripts; chmod -R 755 /tmp/stirling-pdf # buildkit
# 2026-01-10 06:52:25 0.00B 设置环境变量 PATH
ENV PATH=/opt/venv/bin:/opt/unoserver-venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-01-10 06:52:25 67.00B 执行命令并创建新的镜像层
RUN |3 PUID=1000 PGID=1000 VERSION_TAG=2.2.0 /bin/bash -o pipefail -c ln -sf /opt/unoserver-venv/bin/unoconvert /opt/venv/bin/unoconvert && ln -sf /opt/unoserver-venv/bin/unoserver /opt/venv/bin/unoserver # buildkit
# 2026-01-10 06:52:25 10.47MB 执行命令并创建新的镜像层
RUN |3 PUID=1000 PGID=1000 VERSION_TAG=2.2.0 /bin/bash -o pipefail -c python3 -m venv /opt/unoserver-venv --system-site-packages && /opt/unoserver-venv/bin/pip install --no-cache-dir unoserver # buildkit
# 2026-01-10 06:52:23 276.83MB 执行命令并创建新的镜像层
RUN |3 PUID=1000 PGID=1000 VERSION_TAG=2.2.0 /bin/bash -o pipefail -c python3 -m venv /opt/venv --system-site-packages && /opt/venv/bin/pip install --no-cache-dir weasyprint pdf2image opencv-python-headless && /opt/venv/bin/python -c "import cv2; print('OpenCV version:', cv2.__version__)" # buildkit
# 2026-01-10 06:52:15 0.00B 设置环境变量 VERSION_TAG JAVA_BASE_OPTS -XX:HeapDumpPath -XX:MaxRAMPercentage -XX:InitiatingHeapOccupancyPercent -XX:G1PeriodicGCInterval -XX:G1PeriodicGCSystemLoadThreshold -Djava.awt.headless JAVA_CUSTOM_OPTS HOME PUID PGID UMASK FAT_DOCKER INSTALL_BOOK_AND_ADVANCED_HTML_OPS UNO_PATH STIRLING_TEMPFILES_DIRECTORY TMPDIR TEMP TMP
ENV VERSION_TAG=2.2.0 JAVA_BASE_OPTS=-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UnlockExperimentalVMOptions -XX:MaxRAMPercentage=75 -XX:InitiatingHeapOccupancyPercent=20 -XX:+G1PeriodicGCInvokesConcurrent -XX:G1PeriodicGCInterval=10000 -XX:+UseStringDeduplication -XX:G1PeriodicGCSystemLoadThreshold=70 -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 UNO_PATH=/usr/lib/libreoffice/program STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf TMPDIR=/tmp/stirling-pdf TEMP=/tmp/stirling-pdf TMP=/tmp/stirling-pdf
# 2026-01-10 06:52:15 0.00B 添加元数据标签
LABEL org.opencontainers.image.keywords=PDF, manipulation, fat, air-gapped, API, Spring Boot, React
# 2026-01-10 06:52:15 0.00B 添加元数据标签
LABEL org.opencontainers.image.version=2.2.0
# 2026-01-10 06:52:15 0.00B 添加元数据标签
LABEL org.opencontainers.image.authors=Stirling-Tools
# 2026-01-10 06:52:15 0.00B 添加元数据标签
LABEL maintainer=Stirling-Tools
# 2026-01-10 06:52:15 0.00B 添加元数据标签
LABEL org.opencontainers.image.documentation=https://docs.stirlingpdf.com
# 2026-01-10 06:52:15 0.00B 添加元数据标签
LABEL org.opencontainers.image.url=https://www.stirlingpdf.com
# 2026-01-10 06:52:15 0.00B 添加元数据标签
LABEL org.opencontainers.image.vendor=Stirling-Tools
# 2026-01-10 06:52:15 0.00B 添加元数据标签
LABEL org.opencontainers.image.licenses=MIT
# 2026-01-10 06:52:15 0.00B 添加元数据标签
LABEL org.opencontainers.image.source=https://github.com/Stirling-Tools/Stirling-PDF
# 2026-01-10 06:52:15 0.00B 添加元数据标签
LABEL org.opencontainers.image.description=Stirling-PDF with embedded frontend - Fat version with extra fonts for air-gapped environments, includes Calibre, LibreOffice, Tesseract, OCRmyPDF, and more
# 2026-01-10 06:52:15 0.00B 添加元数据标签
LABEL org.opencontainers.image.title=Stirling-PDF Fat
# 2026-01-10 06:52:15 0.00B 定义构建参数
ARG VERSION_TAG=2.2.0
# 2026-01-10 06:52:15 52.32MB 复制新文件或目录到容器中
COPY app/core/src/main/resources/static/fonts/*.ttf /usr/share/fonts/truetype/ # buildkit
# 2026-01-10 06:52:15 286.95KB 复制新文件或目录到容器中
COPY scripts/ /scripts/ # buildkit
# 2026-01-10 06:52:15 3.36KB 复制新文件或目录到容器中
COPY --chown=stirlingpdfuser:stirlingpdfgroup /app/build/libs/restart-helper.jar /restart-helper.jar # buildkit
# 2026-01-10 06:52:15 222.58MB 复制新文件或目录到容器中
COPY --chown=stirlingpdfuser:stirlingpdfgroup /app/app/core/build/libs/*.jar /app.jar # buildkit
# 2026-01-10 06:52:15 14.00B 执行命令并创建新的镜像层
RUN |2 PUID=1000 PGID=1000 /bin/bash -o pipefail -c ln -sf /usr/sbin/gosu /usr/local/bin/su-exec # buildkit
# 2026-01-10 06:52:15 9.62KB 执行命令并创建新的镜像层
RUN |2 PUID=1000 PGID=1000 /bin/bash -o pipefail -c set -eux; if ! getent group stirlingpdfgroup >/dev/null 2>&1; then if getent group "${PGID}" >/dev/null 2>&1; then groupadd -o -g "${PGID}" stirlingpdfgroup; else groupadd -g "${PGID}" stirlingpdfgroup; fi; fi; if ! id -u stirlingpdfuser >/dev/null 2>&1; then if getent passwd | awk -F: -v id="${PUID}" '$3==id{found=1} END{exit !found}'; then echo "UID ${PUID} already in use – creating stirlingpdfuser with automatic UID"; useradd -m -g stirlingpdfgroup -d /home/stirlingpdfuser -s /bin/bash stirlingpdfuser; else useradd -m -u "${PUID}" -g stirlingpdfgroup -d /home/stirlingpdfuser -s /bin/bash stirlingpdfuser; fi; fi # buildkit
# 2026-01-10 06:52:14 0.00B 定义构建参数
ARG PGID=1000
# 2026-01-10 06:52:14 0.00B 定义构建参数
ARG PUID=1000
# 2026-01-10 06:52:14 1.10KB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c ln -sf /opt/calibre/ebook-convert /usr/bin/ebook-convert && /opt/calibre/ebook-convert --version # buildkit
# 2026-01-10 06:52:14 2.31GB 执行命令并创建新的镜像层
RUN /bin/bash -o pipefail -c apt-get update && apt-get install -y --no-install-recommends ca-certificates tzdata tini bash fontconfig openjdk-21-jre-headless ffmpeg poppler-utils ocrmypdf imagemagick fontforge ghostscript libreoffice-nogui libreoffice-java-common python3 python3-venv python3-uno 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 libgdk-pixbuf-2.0-0 gosu unpaper qpdf fonts-dejavu fonts-liberation fonts-noto fonts-noto-cjk fonts-noto-color-emoji fonts-freefont-ttf fonts-terminus fonts-linuxlibertine libfreetype6 libfontconfig1 libx11-6 libxt6 libxext6 libxrender1 libxtst6 libxi6 libxinerama1 libxkbcommon0 libxkbfile1 libsm6 libice6 libegl1 libopengl0 libgl1 libxdamage1 libxfixes3 libxshmfence1 libdrm2 libgbm1 libxkbcommon-x11-0 libxrandr2 libxcomposite1 libnss3 libx11-xcb1 libxcb-cursor0 libdbus-1-3 libglib2.0-0 xvfb x11-utils coreutils xz-utils gpgv curl xdg-utils && curl -fsSL https://download.calibre-ebook.com/linux-installer.sh | sh /dev/stdin && apt-get purge -y xz-utils gpgv xdg-utils && apt-get autoremove -y && rm -rf /var/lib/apt/lists/* # buildkit
# 2026-01-10 06:52:14 0.00B 设置环境变量 TESS_BASE_PATH
ENV TESS_BASE_PATH=/usr/share/tesseract-ocr/5/tessdata
# 2026-01-10 06:52:14 0.00B 设置环境变量 DEBIAN_FRONTEND
ENV DEBIAN_FRONTEND=noninteractive
# 2026-01-10 06:52:14 0.00B
SHELL [/bin/bash -o pipefail -c]
# 2025-12-08 08:00:00 78.62MB
# debian.sh --arch 'amd64' out/ 'stable' '@1765152000'
镜像信息
{
"Id": "sha256:a5a5019a5583f19a312afa692e2b7b49c1478a2f09021bc51b38abb84e4c6c90",
"RepoTags": [
"stirlingtools/stirling-pdf:2.2.0-fat",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/stirlingtools/stirling-pdf:2.2.0-fat"
],
"RepoDigests": [
"stirlingtools/stirling-pdf@sha256:23052be24d20fd4b343965746ed963c11c14ba32e14f93508641d8281195661a",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/stirlingtools/stirling-pdf@sha256:4b3cec6a3ceaeb2c54ebc14a9431ca58474b2ffd4f4dab01af7dea45b736b41e"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-01-09T22:52:29.109216387Z",
"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/venv/bin:/opt/unoserver-venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"DEBIAN_FRONTEND=noninteractive",
"TESS_BASE_PATH=/usr/share/tesseract-ocr/5/tessdata",
"VERSION_TAG=2.2.0",
"JAVA_BASE_OPTS=-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/configs/heap_dumps -XX:+UnlockExperimentalVMOptions -XX:MaxRAMPercentage=75 -XX:InitiatingHeapOccupancyPercent=20 -XX:+G1PeriodicGCInvokesConcurrent -XX:G1PeriodicGCInterval=10000 -XX:+UseStringDeduplication -XX:G1PeriodicGCSystemLoadThreshold=70 -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",
"UNO_PATH=/usr/lib/libreoffice/program",
"STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf",
"TMPDIR=/tmp/stirling-pdf",
"TEMP=/tmp/stirling-pdf",
"TMP=/tmp/stirling-pdf",
"QT_QPA_PLATFORM=offscreen",
"QTWEBENGINE_CHROMIUM_FLAGS=--disable-gpu --disable-dev-shm-usage"
],
"Cmd": null,
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": [
"tini",
"--",
"/scripts/init.sh"
],
"OnBuild": null,
"Labels": {
"maintainer": "Stirling-Tools",
"org.opencontainers.image.authors": "Stirling-Tools",
"org.opencontainers.image.created": "2026-01-09T22:51:00.766Z",
"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.revision": "a284dbfc15eb5ecf44d89777ea5f1fafe07da52f",
"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.2.0-fat"
},
"StopSignal": "SIGTERM",
"Shell": [
"/bin/bash",
"-o",
"pipefail",
"-c"
]
},
"Architecture": "amd64",
"Os": "linux",
"Size": 3094172466,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/efba6a9e19f6377b51a8c04c7b6436d4aaca390a650bffdd3c3bdb1f95cfe1fc/diff:/var/lib/docker/overlay2/c135a0af42d5fc67f2790445428b7be9e70ecc8664c63a51ee0ab8adc84c0a9c/diff:/var/lib/docker/overlay2/c9f4930d89927ba011e5f6dc44f4cea96e936cbbd9c38649869e0819ade260d7/diff:/var/lib/docker/overlay2/f37a5fd0e244b496c797e3ae62a2a9f5efdb9ab9e6b8e36f5381f5c032f0e51c/diff:/var/lib/docker/overlay2/8cd27e4eb979f0c2537fcc69b557bbb3eb67f1d5c5adfe0e361f02ae26f73a89/diff:/var/lib/docker/overlay2/fa06e8ee5fd8fc12b18b9d65342fff001a1a453b9f60953dfdef3b00c29989b7/diff:/var/lib/docker/overlay2/9f06b67e5ba4fa410f6cd53c0c51c19d1b1c5e2908e2b5122b84c4a413058ab3/diff:/var/lib/docker/overlay2/c5604a45fb451ab85eaa2807cf5853d42b02cd48927fb28207f44634df455f47/diff:/var/lib/docker/overlay2/1c8414b9c75884c9855e044f3767f41c5282144faf2495abfaca1ce78429e1bc/diff:/var/lib/docker/overlay2/6ad14dc71b9e07b9812c71a5fdccfe6bf8524491af504a1b5fa5fa1b2b57e9e3/diff:/var/lib/docker/overlay2/0917e4a7c6c479603da635de11dc2bb4d48a1230ed494b70a357edf6b050c6d3/diff:/var/lib/docker/overlay2/ff08935bf0471e2df134c9b09506990c3f9d851769c647bf4eba638224ade69a/diff:/var/lib/docker/overlay2/63e56fbb6dce01841a9276c1e8cc7373e72460e4a46e6b9b732c2119239af1fa/diff",
"MergedDir": "/var/lib/docker/overlay2/6ee60c12499bf98d2601dcda9838242ad59e5b4175878bb3e520601ac4086050/merged",
"UpperDir": "/var/lib/docker/overlay2/6ee60c12499bf98d2601dcda9838242ad59e5b4175878bb3e520601ac4086050/diff",
"WorkDir": "/var/lib/docker/overlay2/6ee60c12499bf98d2601dcda9838242ad59e5b4175878bb3e520601ac4086050/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:487c21b30163442f9ee6b0419af017b72095d5ef7cc986cce5abc390f0c6783d",
"sha256:755b0038e3ca2dbf1c6bbf370f1e98e5a15e52ed650a104e429dec51fb185abc",
"sha256:5c711c1fdb4aa1f105d5477ae6e4bd8e5b4a14414f9c2e3dcedb8e59d981c5e7",
"sha256:e546a2e637e33c0126013041ee586f04cd69f329d2714ef4a590e1e498f27413",
"sha256:81113e3750b256d8f0e08a86ae4db743b58cd65107ab19561637db331f633c86",
"sha256:8cd8879a43d46ae1a2aa57b4765f146a2fb8e64287c3a5997fd117d0947bed9b",
"sha256:aa0d3b0c7fd8051d89e4866850cc740cbcfa6662b32fb5ebf2a3bb236dec9a8b",
"sha256:685aafaac738572d43575aa7861288999e547b074149a8d73cf872945cb99cf8",
"sha256:a4388126249af7653cc5283670268a0d3890e84c256496f5a4aa008285aa91f8",
"sha256:fd8f3c3328ee6f3cb890ec218ee15688b8d87a557a9a6fd4f75e17817d8c6230",
"sha256:e650a8ea7f0ac7675331ae8c52e4471b631ac709055df66de35c6bd330187ad3",
"sha256:428996981a7818dd67723848201deba01a406222e851e73252632a2a1fc69da6",
"sha256:416defbdf8eda423151a74b96b3cc130922bf25e4d6f472e1c11fda0d8576b52",
"sha256:870bed1bbf37c2da1f7a124e788d7cd00261ecb7b8e8163a84f978a8b1d262e6"
]
},
"Metadata": {
"LastTagTime": "2026-01-12T09:37:09.250982763+08:00"
}
}