镜像构建历史
# 2026-07-24 08:22:37 0.00B 设置默认要执行的命令
CMD ["sh" "-c" "exec uvicorn main:app --host \"${PADDLE_OCR_HOST}\" --port \"${PADDLE_OCR_PORT}\""]
# 2026-07-24 08:22:37 0.00B 指定检查容器健康状态的命令
HEALTHCHECK {Test:[CMD-SHELL curl -fsS http://127.0.0.1:8866/health || exit 1] Interval:30s Timeout:10s StartPeriod:1m30s StartInterval:0s Retries:3}
# 2026-07-24 08:22:37 0.00B 声明容器运行时监听的端口
EXPOSE [8866/tcp]
# 2026-07-24 08:22:37 0.00B 设置环境变量 FLAGS_use_mkldnn OMP_NUM_THREADS OPENBLAS_NUM_THREADS MKL_NUM_THREADS PADDLE_PDX_DISABLE_MODEL_SOURCE_CHECK PADDLE_OCR_HOST PADDLE_OCR_PORT PADDLE_OCR_CPU_THREADS
ENV FLAGS_use_mkldnn=0 OMP_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 MKL_NUM_THREADS=1 PADDLE_PDX_DISABLE_MODEL_SOURCE_CHECK=True PADDLE_OCR_HOST=0.0.0.0 PADDLE_OCR_PORT=8866 PADDLE_OCR_CPU_THREADS=1
# 2026-07-24 08:22:37 14.83KB 复制新文件或目录到容器中
COPY main.py . # buildkit
# 2026-07-24 08:22:34 1.25GB 执行命令并创建新的镜像层
RUN |5 DEBIAN_MIRROR=https://mirrors.aliyun.com PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/ PADDLEPADDLE_VERSION=3.2.2 PADDLEPADDLE_PACKAGE=paddlepaddle PADDLEPADDLE_INDEX=https://www.paddlepaddle.org.cn/packages/stable/cpu/ /bin/sh -c python -m pip install --retries 10 --timeout 120 --upgrade pip && python -m pip install --retries 10 --timeout 120 "${PADDLEPADDLE_PACKAGE}==${PADDLEPADDLE_VERSION}" -i "${PADDLEPADDLE_INDEX}" && python -m pip install --retries 10 --timeout 120 -r requirements.txt # buildkit
# 2026-07-24 08:07:20 0.00B 定义构建参数
ARG PADDLEPADDLE_INDEX=https://www.paddlepaddle.org.cn/packages/stable/cpu/
# 2026-07-24 08:07:20 0.00B 定义构建参数
ARG PADDLEPADDLE_PACKAGE=paddlepaddle
# 2026-07-24 08:07:20 0.00B 定义构建参数
ARG PADDLEPADDLE_VERSION=3.2.2
# 2026-07-24 08:07:20 108.00B 复制新文件或目录到容器中
COPY requirements.txt . # buildkit
# 2026-07-24 08:07:20 0.00B 设置环境变量 PIP_NO_CACHE_DIR PIP_DEFAULT_TIMEOUT PIP_RETRIES PIP_INDEX_URL
ENV PIP_NO_CACHE_DIR=1 PIP_DEFAULT_TIMEOUT=120 PIP_RETRIES=10 PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/
# 2026-07-24 08:07:20 0.00B 定义构建参数
ARG PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/
# 2026-07-24 08:07:20 227.17MB 执行命令并创建新的镜像层
RUN |1 DEBIAN_MIRROR=https://mirrors.aliyun.com /bin/sh -c sed -i "s|http://deb.debian.org|${DEBIAN_MIRROR}|g" /etc/apt/sources.list.d/debian.sources && apt-get -o Acquire::Retries=5 update && apt-get install -y --no-install-recommends curl libgl1 libglib2.0-0 libgomp1 && rm -rf /var/lib/apt/lists/* # buildkit
# 2026-07-24 08:04:57 0.00B 定义构建参数
ARG DEBIAN_MIRROR=https://mirrors.aliyun.com
# 2026-07-24 08:04:57 0.00B 设置工作目录为/app
WORKDIR /app
# 2026-07-24 08:04:57 0.00B 设置环境变量 TZ LANG LC_ALL PYTHONDONTWRITEBYTECODE PYTHONUNBUFFERED
ENV TZ=Asia/Shanghai LANG=C.UTF-8 LC_ALL=C.UTF-8 PYTHONDONTWRITEBYTECODE=1 PYTHONUNBUFFERED=1
# 2026-07-24 08:04:57 0.00B 添加元数据标签
LABEL description=PaddleOCR HTTP service for Snail AI document image OCR enhancement.
# 2026-07-24 08:04:57 0.00B 添加元数据标签
LABEL app-name=snail-ai-paddle-ocr-api
# 2026-07-24 08:04:57 0.00B 添加元数据标签
LABEL maintainer=opensnail
# 2026-07-14 10:13:01 0.00B 设置默认要执行的命令
CMD ["python3"]
# 2026-07-14 10:13:01 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-07-14 10:13:01 39.69MB 执行命令并创建新的镜像层
RUN /bin/sh -c set -eux; savedAptMark="$(apt-mark showmanual)"; apt-get update; apt-get install -y --no-install-recommends dpkg-dev 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"; 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 install --disable-pip-version-check --no-cache-dir --no-compile 'setuptools==79.0.1' 'wheel==0.46.3' ; pip3 --version # buildkit
# 2026-07-14 10:07:16 0.00B 设置环境变量 PYTHON_SHA256
ENV PYTHON_SHA256=de6517421601e39a9a3bc3e1bc4c7b2f239297423ee05e282598c83ec0647505
# 2026-07-14 10:07:16 0.00B 设置环境变量 PYTHON_VERSION
ENV PYTHON_VERSION=3.10.20
# 2026-07-14 10:07:16 0.00B 设置环境变量 GPG_KEY
ENV GPG_KEY=A035C8C19219BA821ECEA86B64E628F8D684696D
# 2026-07-14 10:07:16 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-07-14 10:07:16 0.00B 设置环境变量 LANG
ENV LANG=C.UTF-8
# 2026-07-14 10:07:16 0.00B 设置环境变量 PATH
ENV PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 2026-07-13 08:00:00 78.62MB
# debian.sh --arch 'amd64' out/ 'trixie' '@1783900800'
镜像信息
{
"Id": "sha256:763adcbcd9c7f9e311694f208e5c06e8f5ed716359bf503b4fedc56821eed865",
"RepoTags": [
"opensnail/paddle-ocr-api:latest",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/opensnail/paddle-ocr-api:latest"
],
"RepoDigests": [
"opensnail/paddle-ocr-api@sha256:386ce934b1425d0f2dcc2af8c90c01e1d28ab6de5f7ce21a78fcbf7bfa82b627",
"swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/opensnail/paddle-ocr-api@sha256:6714931a3220e36ad0fe79e6b3e7112f9445ff025682a5dbbd1eee0a55c7465c"
],
"Parent": "",
"Comment": "buildkit.dockerfile.v0",
"Created": "2026-07-24T00:22:37.138646971Z",
"Container": "",
"ContainerConfig": null,
"DockerVersion": "",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"8866/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=A035C8C19219BA821ECEA86B64E628F8D684696D",
"PYTHON_VERSION=3.10.20",
"PYTHON_SHA256=de6517421601e39a9a3bc3e1bc4c7b2f239297423ee05e282598c83ec0647505",
"TZ=Asia/Shanghai",
"LC_ALL=C.UTF-8",
"PYTHONDONTWRITEBYTECODE=1",
"PYTHONUNBUFFERED=1",
"PIP_NO_CACHE_DIR=1",
"PIP_DEFAULT_TIMEOUT=120",
"PIP_RETRIES=10",
"PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/",
"FLAGS_use_mkldnn=0",
"OMP_NUM_THREADS=1",
"OPENBLAS_NUM_THREADS=1",
"MKL_NUM_THREADS=1",
"PADDLE_PDX_DISABLE_MODEL_SOURCE_CHECK=True",
"PADDLE_OCR_HOST=0.0.0.0",
"PADDLE_OCR_PORT=8866",
"PADDLE_OCR_CPU_THREADS=1"
],
"Cmd": [
"sh",
"-c",
"exec uvicorn main:app --host \"${PADDLE_OCR_HOST}\" --port \"${PADDLE_OCR_PORT}\""
],
"Healthcheck": {
"Test": [
"CMD-SHELL",
"curl -fsS http://127.0.0.1:8866/health || exit 1"
],
"Interval": 30000000000,
"Timeout": 10000000000,
"StartPeriod": 90000000000,
"Retries": 3
},
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "/app",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"app-name": "snail-ai-paddle-ocr-api",
"description": "PaddleOCR HTTP service for Snail AI document image OCR enhancement.",
"maintainer": "opensnail"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 1600315305,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/b522c3479ecb5a01822b24848ff72d60ac1f44bbb9395d7f6059dd967c042751/diff:/var/lib/docker/overlay2/be37a9949c8adb01cde90529b27945ed3735d46900541bb27109a7d7f1689a7b/diff:/var/lib/docker/overlay2/39b79505f9deb3bc21980d9b37aa39f433ae8f18e7fcd529419ce9c7df616637/diff:/var/lib/docker/overlay2/43c62a6ea65cf8cf850d377ed1be7b0daf34da3b165ad3d1bffd5c4340d37e6b/diff:/var/lib/docker/overlay2/c51a2c1217908f965c6e487af004e3f1b7f44f626be201af72b7c6354319174a/diff:/var/lib/docker/overlay2/56dc6095f2f3fb838bfc3522353d162d4a8927165952451ee45a712ec104ef25/diff:/var/lib/docker/overlay2/af0efedb197b2e5a248e35a97b3de4945601782eb7fb97efea41869f7d8e927a/diff:/var/lib/docker/overlay2/f24ade665d94e6f8ff29f06c32243f0eb4e1ac8da4feddb1b4ad6020791e6a90/diff",
"MergedDir": "/var/lib/docker/overlay2/42e442ee95c034cde1dc86ee9d263f4379d60eb2496573dfa32b984eb5dbb861/merged",
"UpperDir": "/var/lib/docker/overlay2/42e442ee95c034cde1dc86ee9d263f4379d60eb2496573dfa32b984eb5dbb861/diff",
"WorkDir": "/var/lib/docker/overlay2/42e442ee95c034cde1dc86ee9d263f4379d60eb2496573dfa32b984eb5dbb861/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:f2ec4de84f559f5c7be4233b589cdbdbb5507807e05621b77320edd55a1f2a0f",
"sha256:6a8e860a2471d53cc54b6dbd0c9e6c67cbee5e5dc89af0e4d6f93ff1de0ba4f3",
"sha256:ea06dab957fd2074c14e3691aac598500649d7f72d82e0e7c53a4074c440687a",
"sha256:85579ebf440f0e2322ab94aff3535e2f4be4388c7aefcfbad531bdadcc440c7c",
"sha256:29e75865b68258269e04f60c4b9fe8c568e38064b764ec7b18317f94b89392af",
"sha256:1a404b74fe034f834c17fbeab94796cd988d180fe496f41347e026ff4e400d15",
"sha256:45055e01e1a6cb27840553f1fcae39377a46786d103318b05444849d16cc6e93",
"sha256:927f045aa5a3337d0b6a03cb90ee52d9298a1a8bbd817e4fdd872e00778bfbf3",
"sha256:de314547e13bf6f9640ddf3ef6ae60d256ac22e89557278ab633e0387902ea42"
]
},
"Metadata": {
"LastTagTime": "2026-07-30T09:37:57.591283503+08:00"
}
}