镜像构建历史
# 2026-11-03 20:37:48 0.00B 设置默认要执行的命令
CMD ["bash"]
# 2026-11-03 20:37:48 0.00B 配置容器启动时运行的命令
ENTRYPOINT []
# 2026-11-03 20:37:48 0.00B 执行命令并创建新的镜像层
RUN |1 SDK_TAG=sdk-v1.0.4 /bin/sh -c /opt/venv/bin/python -s /opt/hf-sync/hf_weight_sync.py --target /opt/models/ocr --state /tmp/build-check-manifest.json --check-only && rm -f /tmp/build-check-manifest.json || echo "[build] 自检未完成(exit=$?),不影响镜像" # buildkit
# 2026-11-03 20:35:18 38.03KB 执行命令并创建新的镜像层
RUN |1 SDK_TAG=sdk-v1.0.4 /bin/sh -c /opt/venv/bin/python -s - <<'PYEOF'
import hashlib, json, pathlib, sys, time
sys.path.insert(0, "/opt/hf-sync")
import hf_weight_sync as s
d = pathlib.Path("/opt/models/ocr")
def sha256_file(p):
h = hashlib.sha256()
with p.open("rb") as f:
for chunk in iter(lambda: f.read(1 << 22), b""):
h.update(chunk)
return h.hexdigest()
def local_fingerprint():
weights, files = [], {}
for p in sorted(d.rglob("*")):
if not p.is_file():
continue
rel = p.relative_to(d).as_posix()
if rel.startswith(s.IGNORED_PREFIXES):
continue
if any(p.match(pat) for pat in s.WEIGHT_PATTERNS):
weights.append({"path": rel, "size": p.stat().st_size, "oid": sha256_file(p)})
else:
data = p.read_bytes()
files[rel] = hashlib.sha1(b"blob %d\x00" % len(data) + data).hexdigest()
assert weights, "没找到权重文件"
return {"repo": s.REPO_ID, "revision": s.REVISION,
"weights": sorted(weights, key=lambda w: w["path"]),
"files": files, "tensor_count": None}
local = local_fingerprint()
try:
remote = s.fingerprint(s.fetch_entries(s.REPO_ID, s.REVISION,
endpoints=s.DEFAULT_ENDPOINTS))
except Exception as exc:
print(f"[bake] 拉不到远端指纹({exc}),烤本地指纹")
m = local
else:
local_oids = {w["path"]: w["oid"] for w in local["weights"]}
remote_oids = {w["path"]: w["oid"] for w in remote["weights"]}
if local_oids == remote_oids:
print(f"[bake] 内置权重 == 远端最新({list(remote_oids.values())[0][:12]}),烤远端指纹")
m = remote
else:
print(f"[bake] 内置权重落后于远端(本地 {list(local_oids.values())[0][:12]}"
f" vs 远端 {list(remote_oids.values())[0][:12]}),烤本地指纹,首跑会自动更新")
m = local
m["applied_at"] = "baked " + time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
pathlib.Path("/opt/models/.hf-ocr-manifest.json").write_text(
json.dumps(m, indent=2, sort_keys=True) + "\n", "utf-8")
PYEOF # buildkit
# 2026-11-03 20:29:37 3.50KB 执行命令并创建新的镜像层
RUN |1 SDK_TAG=sdk-v1.0.4 /bin/sh -c chmod +x /entrypoint.sh && bash -n /entrypoint.sh && /opt/venv/bin/python -s /opt/hf-sync/hf_weight_sync.py --help > /dev/null && grep -q "hf_weight_sync.py" /entrypoint.sh && test -f /opt/models/ocr/config.json # buildkit
# 2026-11-03 20:29:37 3.50KB 复制新文件或目录到容器中
COPY ocr-api/vlm-entrypoint.sh /entrypoint.sh # buildkit
# 2026-11-03 20:29:37 0.00B 复制新文件或目录到容器中
COPY ocr-api/scripts/hf_weight_sync.py /opt/hf-sync/hf_weight_sync.py # buildkit
# 2026-11-03 20:29:36 26.04KB 复制新文件或目录到容器中
COPY ocr-api/scripts/hf_weight_sync.py /opt/hf-sync/hf_weight_sync.py # buildkit
# 2026-11-03 20:29:36 77.53MB 执行命令并创建新的镜像层
RUN |1 SDK_TAG=sdk-v1.0.4 /bin/sh -c curl -fsSL "https://github.com/OpenBMB/MiniCPM-OCR/archive/refs/tags/${SDK_TAG}.tar.gz" -o /tmp/repo.tgz && mkdir -p /opt/app-new && tar -xzf /tmp/repo.tgz -C /opt/app-new --strip-components=1 && rm -f /tmp/repo.tgz && uv pip uninstall --python /opt/venv/bin/python minicpmvocr minicpm-ocr || true && rm -rf /opt/app && mv /opt/app-new /opt/app && uv pip install --python /opt/venv/bin/python --no-cache --no-deps /opt/app/sdk && /opt/venv/bin/python -s -c "import importlib.metadata as m; assert m.version('minicpm-ocr') == '1.0.4', m.version('minicpm-ocr'); import minicpmvocr; assert '/opt/app/' not in minicpmvocr.__file__, minicpmvocr.__file__; from minicpmvocr import pipelined_run, UprightCorrector; print('MiniCPM-OCR', m.version('minicpm-ocr'), minicpmvocr.__file__)" && test -f /opt/app/sdk/pyproject.toml # buildkit
# 2026-11-03 20:29:36 0.00B 定义构建参数
ARG SDK_TAG=sdk-v1.0.4
# 2026-10-23 16:18:12 0.00B
/bin/sh -c #(nop) ENTRYPOINT ["/entrypoint.sh"]
# 2026-10-23 16:17:56 0.00B
/bin/sh -c #(nop) ENV OCR_MODEL_PATH=/opt/models/ocr OCR_SERVED_NAME=minicpm-ocr-1.0 OCR_GPU_UTIL=0.90 VLLM_GDN_PREFILL_BACKEND=triton
# 2026-10-23 16:17:41 0.00B
/bin/sh -c chmod 755 /entrypoint.sh
# 2026-10-23 16:17:24 1.64KB
/bin/sh -c #(nop) COPY file:ff0c57cb28b20d9337d1a061a460975ea9e7f750d1476bbd2802f3e10d71611d in /entrypoint.sh
# 2026-10-21 15:17:21 0.00B 设置默认要执行的命令
CMD []
# 2026-10-21 15:17:21 0.00B 配置容器启动时运行的命令
ENTRYPOINT ["/entrypoint.sh"]
# 2026-10-21 15:17:21 0.00B 指定检查容器健康状态的命令
HEALTHCHECK &{["CMD-SHELL" "curl -fs http://127.0.0.1:${PORT}/ready >/dev/null || exit 1"] "30s" "5s" "20m0s" "0s" '\x03'}
# 2026-10-21 15:17:21 0.00B 声明容器运行时监听的端口
EXPOSE [8000/tcp]
# 2026-10-21 15:17:21 0.00B 设置环境变量 OCR_MODEL_PATH OCR_SERVED_NAME OCR_SERVED_MODEL_NAME VLLM_URL OCR_VLLM_URL OCR_LAYOUT_MODEL_DIR OCR_LAYOUT_DEVICE OCR_UPRIGHT_DIR OCRWEB_DATA_DIR VLLM_GDN_PREFILL_BACKEND VLLM_USE_FLASHINFER_SAMPLER VLLM_PLUGINS PYTHONNOUSERSITE PORT
ENV OCR_MODEL_PATH=/opt/models/ocr OCR_SERVED_NAME=minicpm-ocr-1.0 OCR_SERVED_MODEL_NAME=minicpm-ocr-1.0 VLLM_URL=http://127.0.0.1:18499 OCR_VLLM_URL=http://127.0.0.1:18499 OCR_LAYOUT_MODEL_DIR=/opt/models/layout OCR_LAYOUT_DEVICE=cuda:0 OCR_UPRIGHT_DIR=/opt/models/paddle_upright OCRWEB_DATA_DIR=/tmp/webdemo-data VLLM_GDN_PREFILL_BACKEND=triton VLLM_USE_FLASHINFER_SAMPLER=0 VLLM_PLUGINS=lora_filesystem_resolver,lora_hf_hub_resolver PYTHONNOUSERSITE=1 PORT=8000
# 2026-10-21 15:17:21 45.00B 执行命令并创建新的镜像层
RUN /bin/sh -c printf '#!/usr/bin/env bash\nexec /entrypoint.sh "$@"\n' > /usr/local/bin/vllm && chmod +x /entrypoint.sh /usr/local/bin/vllm # buildkit
# 2026-10-21 15:17:20 3.83KB 复制新文件或目录到容器中
COPY entrypoint.sh /entrypoint.sh # buildkit
# 2026-10-21 15:17:20 46.19KB 执行命令并创建新的镜像层
RUN /bin/sh -c uv pip install --python /opt/venv/bin/python --no-build-isolation --no-deps -e /opt/app && /opt/venv/bin/python -c "import minicpmvocr, sys; assert minicpmvocr.__file__.startswith('/opt/app/'), minicpmvocr.__file__" # buildkit
# 2026-10-21 15:17:18 470.82KB 复制新文件或目录到容器中
COPY app /opt/app # buildkit
# 2026-10-21 15:17:18 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c rm -rf /workspace/minicpmvocr-sdk # buildkit
# 2026-10-21 15:17:18 0.00B 执行命令并创建新的镜像层
RUN /bin/sh -c test -f /opt/models/ocr/config.json && test -f /opt/models/layout/inference.pdiparams && test -d /opt/models/paddle_upright/PP-LCNet_x1_0_doc_ori # buildkit
# 2026-10-21 15:17:17 18.64MB 复制新文件或目录到容器中
COPY models/paddle_upright /opt/models/paddle_upright # buildkit
# 2026-10-20 21:12:06 132.02MB 复制新文件或目录到容器中
COPY models/layout /opt/models/layout # buildkit
# 2026-10-20 21:12:05 2.61GB 复制新文件或目录到容器中
COPY models/ocr /opt/models/ocr # buildkit
# 2026-10-19 20:59:37 246.95KB 执行命令并创建新的镜像层
RUN |6 PIP_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple PADDLE_INDEX=https://www.paddlepaddle.org.cn/packages/stable/cu129/ TORCH_FIND_LINKS=https://mirrors.aliyun.com/pytorch-wheels/cu129/ VLLM_BASE_COMMIT=5555a2d8f7116b2b4877f66516f4128176cf722a VLLM_VERSION=0.31.1rc1.dev379+g484a12539 TRANSFORMERS_VERSION=5.19.0.dev0 /bin/sh -c /opt/venv/bin/python -c "from importlib.metadata import version as v, distributions; import cv2, torch, torchcodec.decoders; assert torch.version.cuda.startswith('12.9'), torch.version.cuda; assert hasattr(cv2, 'ximgproc'), 'cv2 is not opencv-contrib'; cu13 = sorted(d.metadata['Name'] for d in distributions() if d.metadata['Name'].lower().startswith('nvidia-cuda-') and not d.metadata['Name'].lower().endswith('-cu12')); assert not cu13, 'CUDA 13 runtime packages present: %s' % cu13; print('vllm', v('vllm'), '| torch', torch.__version__, '| torchcodec', v('torchcodec'), '| paddle', v('paddlepaddle-gpu'), '| paddlex', v('paddlex'), '| cv2', cv2.__version__)" # buildkit
# 2026-10-19 20:59:34 1.97GB 执行命令并创建新的镜像层
RUN |6 PIP_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple PADDLE_INDEX=https://www.paddlepaddle.org.cn/packages/stable/cu129/ TORCH_FIND_LINKS=https://mirrors.aliyun.com/pytorch-wheels/cu129/ VLLM_BASE_COMMIT=5555a2d8f7116b2b4877f66516f4128176cf722a VLLM_VERSION=0.31.1rc1.dev379+g484a12539 TRANSFORMERS_VERSION=5.19.0.dev0 /bin/sh -c SETUPTOOLS_SCM_PRETEND_VERSION=${TRANSFORMERS_VERSION} uv pip install --python /opt/venv/bin/python --no-deps /opt/src/transformers && VLLM_USE_PRECOMPILED=1 VLLM_PRECOMPILED_WHEEL_COMMIT=${VLLM_BASE_COMMIT} VLLM_MAIN_CUDA_VERSION=12.9 SETUPTOOLS_SCM_PRETEND_VERSION=${VLLM_VERSION} uv pip install --python /opt/venv/bin/python --no-deps --no-build-isolation /opt/src/vllm && uv pip install --python /opt/venv/bin/python --no-deps --reinstall opencv-contrib-python==4.10.0.84 && uv pip install --python /opt/venv/bin/python --no-deps --reinstall "paddlex[ocr]==3.7.2" && rm -rf /opt/src # buildkit
# 2026-10-19 20:55:08 125.31MB 复制新文件或目录到容器中
COPY stage/vllm /opt/src/vllm # buildkit
# 2026-10-19 20:55:06 96.05MB 复制新文件或目录到容器中
COPY stage/transformers /opt/src/transformers # buildkit
# 2026-10-19 20:55:04 14.82GB 执行命令并创建新的镜像层
RUN |6 PIP_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple PADDLE_INDEX=https://www.paddlepaddle.org.cn/packages/stable/cu129/ TORCH_FIND_LINKS=https://mirrors.aliyun.com/pytorch-wheels/cu129/ VLLM_BASE_COMMIT=5555a2d8f7116b2b4877f66516f4128176cf722a VLLM_VERSION=0.31.1rc1.dev379+g484a12539 TRANSFORMERS_VERSION=5.19.0.dev0 /bin/sh -c uv venv /opt/venv --python /usr/local/bin/python3.12 && uv pip install --python /opt/venv/bin/python --no-deps --extra-index-url ${PADDLE_INDEX} --find-links ${TORCH_FIND_LINKS} --index-strategy unsafe-best-match -r /tmp/requirements.lock && uv pip install --python /opt/venv/bin/python "cmake>=3.26.1" setuptools-scm "setuptools-rust>=1.9.0" wheel # buildkit
# 2026-10-19 20:47:13 27.02KB 复制新文件或目录到容器中
COPY requirements.lock /tmp/requirements.lock # buildkit
# 2026-10-19 17:29:59 468.67MB 执行命令并创建新的镜像层
RUN |6 PIP_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple PADDLE_INDEX=https://www.paddlepaddle.org.cn/packages/stable/cu129/ TORCH_FIND_LINKS=https://mirrors.aliyun.com/pytorch-wheels/cu129/ VLLM_BASE_COMMIT=5555a2d8f7116b2b4877f66516f4128176cf722a VLLM_VERSION=0.31.1rc1.dev379+g484a12539 TRANSFORMERS_VERSION=5.19.0.dev0 /bin/sh -c sed -i 's|deb.debian.org|mirrors.tuna.tsinghua.edu.cn|g' /etc/apt/sources.list.d/debian.sources && apt-get update && apt-get install -y --no-install-recommends gcc libc6-dev libgl1 libglib2.0-0 libgomp1 curl ca-certificates && rm -rf /var/lib/apt/lists/* && pip install --no-cache-dir -i ${PIP_INDEX} uv # buildkit
# 2026-10-19 17:29:59 0.00B 设置环境变量 DEBIAN_FRONTEND UV_INDEX_URL UV_LINK_MODE UV_COMPILE_BYTECODE UV_NO_CACHE PYTHONNOUSERSITE
ENV DEBIAN_FRONTEND=noninteractive UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple UV_LINK_MODE=copy UV_COMPILE_BYTECODE=0 UV_NO_CACHE=1 PYTHONNOUSERSITE=1
# 2026-10-19 17:29:59 0.00B 定义构建参数
ARG TRANSFORMERS_VERSION=5.19.0.dev0
# 2026-10-19 17:29:59 0.00B 定义构建参数
ARG VLLM_VERSION=0.31.1rc1.dev379+g484a12539
# 2026-10-19 17:29:59 0.00B 定义构建参数
ARG VLLM_BASE_COMMIT=5555a2d8f7116b2b4877f66516f4128176cf722a
# 2026-10-19 17:29:59 0.00B 定义构建参数
ARG TORCH_FIND_LINKS=https://mirrors.aliyun.com/pytorch-wheels/cu129/
# 2026-10-19 17:29:59 0.00B 定义构建参数
ARG PADDLE_INDEX=https://www.paddlepaddle.org.cn/packages/stable/cu129/
# 2026-10-19 17:29:59 0.00B 定义构建参数
ARG PIP_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
# 2026-10-06 10:04:40 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-10-06 10:04:40 36.00B 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; for src in idle3 pip3 pydoc3 python3 python3-config; do dst="$(echo "$src" | tr -d 3)"; [ -s "/usr/local/bin/$src" ]; [ ! -e "/usr/local/bin/$dst" ]; ln -svT "$src" "/usr/local/bin/$dst"; done # buildkit
# 2026-10-06 10:04:40 36.81MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev g++ gcc gnupg libbluetooth-dev libbz2-dev libc6-dev libdb-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libreadline-dev libsqlite3-dev libssl-dev make tk-dev uuid-dev wget xz-utils zlib1g-dev ; wget -O python.tar.xz "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz"; echo "$PYTHON_SHA256 *python.tar.xz" | sha256sum -c -; wget -O python.tar.xz.asc "https://www.python.org/ftp/python/${PYTHON_VERSION%%[a-z]*}/Python-$PYTHON_VERSION.tar.xz.asc"; GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$GPG_KEY"; gpg --batch --verify python.tar.xz.asc python.tar.xz; gpgconf --kill all; rm -rf "$GNUPGHOME" python.tar.xz.asc; mkdir -p /usr/src/python; tar --extract --directory /usr/src/python --strip-components=1 --file python.tar.xz; rm python.tar.xz; cd /usr/src/python; gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; ./configure --build="$gnuArch" --enable-loadable-sqlite-extensions --enable-optimizations --enable-option-checking=fatal --enable-shared $(test "${gnuArch%%-*}" != 'riscv64' && echo '--with-lto') --with-ensurepip ; nproc="$(nproc)"; EXTRA_CFLAGS="$(dpkg-buildflags --get CFLAGS)"; LDFLAGS="$(dpkg-buildflags --get LDFLAGS)"; LDFLAGS="${LDFLAGS:-} -Wl,--strip-all"; arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; case "$arch" in amd64|arm64) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer"; ;; i386) ;; *) EXTRA_CFLAGS="${EXTRA_CFLAGS:-} -fno-omit-frame-pointer"; ;; esac; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-}" ; rm python; make -j "$nproc" "EXTRA_CFLAGS=${EXTRA_CFLAGS:-}" "LDFLAGS=${LDFLAGS:-} -Wl,-rpath='\$\$ORIGIN/../lib'" python ; make install; cd /; rm -rf /usr/src/python; find /usr/local -depth \( \( -type d -a \( -name test -o -name tests -o -name idle_test \) \) -o \( -type f -a \( -name '*.pyc' -o -name '*.pyo' -o -name 'libpython*.a' \) \) \) -exec rm -rf '{}' + ; ldconfig; apt-mark auto '.*' > /dev/null; apt-mark manual $savedAptMark; find /usr/local -type f -executable -not \( -name '*tkinter*' \) -exec ldd '{}' ';' | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); printf "*%s\n", so }' | sort -u | xargs -rt dpkg-query --search | awk 'sub(":$", "", $1) { print $1 }' | sort -u | xargs -r apt-mark manual ; apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; apt-get dist-clean; export PYTHONDONTWRITEBYTECODE=1; python3 --version; pip3 --version # buildkit
# 2026-10-06 09:55:57 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=c2c4321961fab0fb999d66e0cecf521c2ab3994c7992873ea99e306c1094fd5a
# 2026-10-06 09:55:57 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.12.15
# 2026-10-06 09:55:57 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305
# 2026-10-06 09:55:57 3.81MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; apt-get update; apt-get install -y --no-install-recommends ca-certificates netbase tzdata ; apt-get dist-clean # buildkit
# 2026-10-06 09:55:57 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-10-06 09:55:57 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-10-05 08:00:00 78.82MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1791158400'
镜像信息
{
"Id": "sha256:d7496f83382fe69ad572a2fb680814db36c376359af00273f7574f266d4bf12d",
"RepoTags": [
"openbmbofficial/minicpm-ocr:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openbmbofficial/minicpm-ocr:latest"
],
"RepoDigests": [
"openbmbofficial/minicpm-ocr@sha256:7c397ed0301736f7c9c29a3f9ec5c698a36592c73b2cb1dfd78fe2ad5e7ab773",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/openbmbofficial/minicpm-ocr@sha256:79f4267ed9e2ff49480e3e5e9e8e9509f316b9d19f64e2892dc978630ac494a3"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-11-03T20:37:48.439952878+08:00",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"LANG=C.UTF-8",
"GPG_KEY=7169605F62C751356D054A26A821E680E5FA6305",
"PYTHON_VERSION=3.12.15",
"PYTHON_SHA256=c2c4321961fab0fb999d66e0cecf521c2ab3994c7992873ea99e306c1094fd5a",
"DEBIAN_FRONTEND=noninteractive",
"UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple",
"UV_LINK_MODE=copy",
"UV_COMPILE_BYTECODE=0",
"UV_NO_CACHE=1",
"PYTHONNOUSERSITE=1",
"OCR_MODEL_PATH=/opt/models/ocr",
"OCR_SERVED_NAME=minicpm-ocr-1.0",
"OCR_SERVED_MODEL_NAME=minicpm-ocr-1.0",
"VLLM_URL=http://127.0.0.1:18499",
"OCR_VLLM_URL=http://127.0.0.1:18499",
"OCR_LAYOUT_MODEL_DIR=/opt/models/layout",
"OCR_LAYOUT_DEVICE=cuda:0",
"OCR_UPRIGHT_DIR=/opt/models/paddle_upright",
"OCRWEB_DATA_DIR=/tmp/webdemo-data",
"VLLM_GDN_PREFILL_BACKEND=triton",
"VLLM_USE_FLASHINFER_SAMPLER=0",
"VLLM_PLUGINS=lora_filesystem_resolver,lora_hf_hub_resolver",
"PORT=8000",
"OCR_GPU_UTIL=0.90"
],
"Cmd": [
"bash"
],
"Healthcheck": {
"Test": [
"CMD-SHELL",
"curl -fs http://127.0.0.1:${PORT}/ready \u003e/dev/null || exit 1"
],
"Interval": 30000000000,
"Timeout": 5000000000,
"StartPeriod": 1200000000000,
"Retries": 3
},
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": null
},
"Architecture": "amd64",
"Os": "linux",
"Size": 20445500494,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/7f2871654e30b6e935eaf5cf2f4a862d486ab3ffbc333a2e02156936138d8695/diff:/var/lib/docker/overlay2/fc1444887914aa1510b1332c00e4ab3c456d1724fbb32109531f5407d6efb447/diff:/var/lib/docker/overlay2/0f7f140c0340b025ba0418d3179ce711f9a641959a9151355ca72d45329c73dd/diff:/var/lib/docker/overlay2/a32ef0ff0d83e488025ed830974360d995dddcbb4978b6bc465dcabb2fdaebb3/diff:/var/lib/docker/overlay2/234a39fce6dc2b34d423ee33641bdac6d204d1db13d03d008da7289decca48ca/diff:/var/lib/docker/overlay2/93dd73862e2b3a8323559fa3a232feae534fad834d6d12346a750bfdc9d374c9/diff:/var/lib/docker/overlay2/76082cf0eccbad3e1c8f576a09595220596d05534c14dac8ccc1ea79cc82c267/diff:/var/lib/docker/overlay2/6dc5e899ed9dfff46ab504db1dd05b317c579067a92f6b64a0cdb5fddea85667/diff:/var/lib/docker/overlay2/39b07409685c53c062e0d58aaafaac01f0a64f424b03623cf58cbac83ed28734/diff:/var/lib/docker/overlay2/c83e47b3082469dc2b7dc4065f3ebeaa32a01e2291ae67d7add2c4e357637f43/diff:/var/lib/docker/overlay2/ff778dcbb9fe19f2be35390ab98f32693da34fde56be3e0ffcfc690571d20e2f/diff:/var/lib/docker/overlay2/f460a11db641b40edf757c1787e0688de318a34b10e6c4c4c31bd2668d78e427/diff:/var/lib/docker/overlay2/22e0420ef91b250018cb3caa7c5a07eb27d9eeaf667544177d21e9fcb89fd7e2/diff:/var/lib/docker/overlay2/0c981549b90da82ede4bcb2da903758fd2cc96209a605e1fc56031d8145708ad/diff:/var/lib/docker/overlay2/ce0d6ffb154dc5fbf34d454457441d890c4eddb348b745321950faf59cb21465/diff:/var/lib/docker/overlay2/aab917f6be892f0e501aac945ff5a89750a8e94841256287eb8ebc5a4e679fd8/diff:/var/lib/docker/overlay2/5285542e80da1a98f3706182281c64925e5df722a352f26e640a6794447ca71c/diff:/var/lib/docker/overlay2/7f46e590c8ddcb587af572e2f9292309c2207384455e6865e3671658ba7b4d02/diff:/var/lib/docker/overlay2/0dc74b6c611041a950543d82d40a143af0834869a6889ee042fe12de0b64832e/diff:/var/lib/docker/overlay2/cbecc8e8cae761195dfc71268347ed8cfd124fc54bef685c4d3d1c89858cafd2/diff:/var/lib/docker/overlay2/10ff5508861053049fe4a2993b6b772a1226183ccd03b480f97df16b4ef1ad55/diff:/var/lib/docker/overlay2/d2e8bebde8102e357cde10a25a08f02856304822e7f6f96c01b594a419334785/diff:/var/lib/docker/overlay2/116fbc46e30c687dfd9ec9b042f66e2ede151896da4e46ea505c5a728c3ea65a/diff:/var/lib/docker/overlay2/a30afeee0d5e19a22fe481fa597ca4194314b881dea643de2aa23e062050b001/diff:/var/lib/docker/overlay2/2ed1e1db2447ca1530421686aa0559194a5d876dc66cac43394f862f809316b4/diff:/var/lib/docker/overlay2/c5562141e40f42eb10f2a743f82878054e0cf5e7c7b9648c6a32e29a16b53a35/diff:/var/lib/docker/overlay2/604b714072d6d7d347c28c686d63b0e2ff9ffc46327fc28a9c9e0fd617161589/diff",
"MergedDir": "/var/lib/docker/overlay2/e551d4d6956552f9fefcea0f62bd0d88487938e868fc5932029e920a09c4d4d3/merged",
"UpperDir": "/var/lib/docker/overlay2/e551d4d6956552f9fefcea0f62bd0d88487938e868fc5932029e920a09c4d4d3/diff",
"WorkDir": "/var/lib/docker/overlay2/e551d4d6956552f9fefcea0f62bd0d88487938e868fc5932029e920a09c4d4d3/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:15f1c8eb1ab18eae260c7fb6296434cbe1ff0e1e30fd814ae92a80dd54005e62",
"sha256:e1fa2746ad6d51e7de9171dfcbb1fe93d01d51c5d8d3623e0c3b223076dc5d23",
"sha256:b361fa3b97940ee89a1aab8fde1027e47ab2c2e700ca2f8d5988ad2c64386e5c",
"sha256:dca2a125b4903477bcb42084172cfc98865299810620ffd617bf6e12dd83d89f",
"sha256:56178984e1253a7dacbb95f7e6d408a83110b39085b171ed6aca13d6c04b0f0c",
"sha256:08b8a3ad04af7e6cb36415bef325b6bc88dfcb6561786d98c492a9dd08ee1823",
"sha256:d4c45ac7bdf36612c3935662a38c57559fdb0fed70d54349033d54c33acafae8",
"sha256:8b09ab772db9c4939b5eb5a5691511953a5863b69a1089b5e27db2ac65465139",
"sha256:096bcfb9812ea9262b447f9c5d577de9100f2f537e21dbbf42d3a727604e5aaa",
"sha256:f4123c34ba14ffd4321b9721bab8df451ea48fdbff04fc42759ce28ed1bea381",
"sha256:cdf9067a5be2e274a86fbdcc9c8914ef1dee54eb78714bce59f15686f88ece9e",
"sha256:8c35d4899f02b0b51c4f79653ba808dcbb5e1350432e14ca3476be580704d4f0",
"sha256:2de1a86635a08f64ff8f8204f62d5b25c198b0769f445f9954e06442725d3b6f",
"sha256:a60de6ea98eb48fee9d036fa8b9d2dff9c4ced653603f05ad30bf743d8a24bb0",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:fcc6ce183f2a7e50ffad078e4963b79e9af2cb0640d7e425c36c02406e69b2e5",
"sha256:c17e3ac539e54fb2fd388f723a9fc036ba0fa8298aa1ffa6a590cb1354e95ff4",
"sha256:df93ee70fd9d49988e6493fadbc2768e1e00b3d650b43e108afd69cca739a03c",
"sha256:4dfe26634ec2163efa111267bb68eebcea14438d91c67ccc945c8db4ca82b57d",
"sha256:f08c0810a5b9cf27a56edbbea40f4a20f9d7389b469f1d60f5f8a3fb22967746",
"sha256:3d7fbcfbb7c88b7a7f5dc8c12be42fa5cf7838806205d93caa3214f8a5d937d2",
"sha256:4ffbb0c469da66ce62355b98444549bac112088fd7b9217c286a6ec1cf6cfd00",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"sha256:ded38f5acf486c60bbb16f3c144c5dad482323ad9a51b1058b9eacd5d0b40e79",
"sha256:fe170bfd4ff6bfdeb64c08e5f96a7ae43b754b1f3cc001a146c9ba7c975610a1",
"sha256:7e43bf76af628993f9f3087199a5b79918ebea7aae18a55989617f748b2d8ff8",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
]
},
"Metadata": {
"LastTagTime": "2026-11-07T01:39:02.783628738+08:00"
}
}