Skip to content

做成了Docker 参考 #2

@xiajiebuhui

Description

@xiajiebuhui

JK-LLM-OCR(PP-OCRv5_server)在 Unraid 上 Docker 部署(CPU版)

参考我的NAS Intel® Xeon® CPU D-1581 @ 1.80GHz 64G内存

目录结构(构建上下文)

建议在同一目录下放 Dockerfile 和源码:

jk-llm-ocr-docker/
  Dockerfile
  JK-LLM-OCR/
    server/
    ...

1) Dockerfile

FROM python:3.11-slim-bookworm

WORKDIR /app

# 基础依赖(含调试工具 + OpenCV/Paddle 常见依赖)
RUN set -eux; \
  sed -i \
    -e 's|http://deb.debian.org/debian|https://mirrors.tuna.tsinghua.edu.cn/debian|g' \
    -e 's|http://security.debian.org/debian-security|https://mirrors.tuna.tsinghua.edu.cn/debian-security|g' \
    -e 's|http://deb.debian.org/debian-security|https://mirrors.tuna.tsinghua.edu.cn/debian-security|g' \
    /etc/apt/sources.list.d/debian.sources \
  && apt-get update \
  && apt-get install -y --no-install-recommends \
    bash \
    curl \
    git \
    ca-certificates \
    iproute2 \
    procps \
    net-tools \
    vim-tiny \
    less \
    libgl1 \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libxrender1 \
    libgomp1 \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*

# 拷贝本地源码(只需要 server 也行,这里直接拷贝整个仓库)
COPY JK-LLM-OCR/ /app

WORKDIR /app/server

RUN chmod +x ./scripts/start_ppocrv5_server.sh

# 升级 pip
RUN python -m pip install --upgrade pip

# 安装依赖(CPU 推理已验证组合)
RUN python -m pip install "paddlepaddle==3.2.2" -f https://www.paddlepaddle.org.cn/packages/stable/cpu/ \
 && python -m pip install "paddleocr==3.4.0" "paddlex==3.4.1"

# 端口(实际服务用 8080;50000 可保留声明)
EXPOSE 50000 8080

CMD ["bash", "-lc", "./scripts/start_ppocrv5_server.sh"]

2) 构建镜像

在 Dockerfile 所在目录执行:

docker build -t jk-llm-ocr:cpu .

可选自检(确认依赖没问题):

docker run --rm -it jk-llm-ocr:cpu \
  bash -lc "python3 -c 'import paddleocr; print(paddleocr.__version__)'"

3) 下载模型(持久化到宿主机目录)

建议把模型放到宿主机目录,避免容器重建后丢失:

mkdir -p /mnt/user/appdata/jk-llm-ocr/models

用一次性容器下载模型到挂载目录:

docker run --rm -it \
  -e PADDLE_PDX_DISABLE_MODEL_SOURCE_CHECK=True \
  -v /mnt/user/appdata/jk-llm-ocr/models:/app/server/models \
  jk-llm-ocr:cpu \
  bash -lc "cd /app/server && ./scripts/download_ppocrv5_server_models.sh && ls -lah /app/server/models"

4) 部署运行(推荐:host 网络 + 监听 0.0.0.0)

docker rm -f jk-llm-ocr 2>/dev/null || true

docker run -d --name jk-llm-ocr \
  --network host \
  -e HOST=0.0.0.0 \
  -e PORT=8080 \
  -e PADDLE_PDX_DISABLE_MODEL_SOURCE_CHECK=True \
  -v /mnt/user/appdata/jk-llm-ocr/models:/app/server/models \
  --restart unless-stopped \
  jk-llm-ocr:cpu

5) 验证

在 Unraid 上:

curl -sS http://127.0.0.1:8080/healthz

在局域网其他机器(或本机用内网 IP):

curl -sS http://192.168.1.5:8080/healthz

预期返回:

{"status":"ok"}

6) Bob 插件配置(示例)

OCR 服务地址填:

http://192.168.1.5:8080/ocr

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions