# runtime Dockerfile 离线版本 # 修改点: 使用本地模型文件替代 wget 下载 FROM ghcr.nju.edu.cn/astral-sh/uv:python3.11-bookworm # 配置 apt 阿里云镜像源 RUN --mount=type=cache,target=/var/cache/apt \ --mount=type=cache,target=/var/lib/apt \ if [ -f /etc/apt/sources.list.d/debian.sources ]; then \ sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources; \ elif [ -f /etc/apt/sources.list ]; then \ sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list; \ fi \ && apt update \ && apt install -y libgl1 libglib2.0-0 vim libmagic1 libreoffice dos2unix swig poppler-utils tesseract-ocr # 离线模式: 本地模型文件路径 ARG RESOURCES_DIR=./build-cache/resources ARG MODELS_DIR=${RESOURCES_DIR}/models # 复制本地 PaddleOCR 模型(离线环境预先下载) RUN mkdir -p /home/models COPY ${MODELS_DIR}/ch_ppocr_mobile_v2.0_cls_infer.tar /home/models/ RUN tar -xf /home/models/ch_ppocr_mobile_v2.0_cls_infer.tar -C /home/models COPY runtime/python-executor /opt/runtime COPY runtime/ops /opt/runtime/datamate/ops COPY runtime/ops/user /opt/runtime/user COPY scripts/images/runtime/start.sh /opt/runtime/start.sh ENV PYTHONPATH=/opt/runtime/datamate/ ENV UV_EXTRA_INDEX_URL="https://download.pytorch.org/whl/cpu" ENV UV_INDEX_STRATEGY=unsafe-best-match # 配置 uv 使用阿里云 PyPI 镜像 ENV UV_INDEX_URL="https://mirrors.aliyun.com/pypi/simple/" WORKDIR /opt/runtime # 复制本地 spaCy 模型(离线环境预先下载) COPY ${MODELS_DIR}/zh_core_web_sm-3.8.0-py3-none-any.whl /tmp/ RUN --mount=type=cache,target=/root/.cache/uv \ uv pip install -e .[all] --system \ && uv pip install -r /opt/runtime/datamate/ops/pyproject.toml --system \ && uv pip install /tmp/zh_core_web_sm-3.8.0-py3-none-any.whl --system \ && echo "/usr/local/lib/ops/site-packages" > /usr/local/lib/python3.11/site-packages/ops.pth RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && chmod +x /opt/runtime/start.sh \ && dos2unix /opt/runtime/start.sh EXPOSE 8081 ENTRYPOINT ["/opt/runtime/start.sh"]