# 使用 ghcr.io/awwaawwa/pdfmathtranslate:dev 作为基础镜像 # 这个镜像应该已经包含了 pdf2zh 及其运行环境 FROM ghcr.io/awwaawwa/pdfmathtranslate:dev # 设置工作目录,如果基础镜像没有设置或者你需要特定的工作目录 # 如果基础镜像已经设置了合适的工作目录,这行可能不需要 WORKDIR /app # 设置环境变量 PYTHONUNBUFFERED=1 # 这对于在 Docker 中运行 Python 应用通常是个好习惯,可以确保日志直接输出 # 基础镜像可能已经设置了此环境变量 ENV PYTHONUNBUFFERED=1 # 切换到 root 用户,确保后续指令和容器运行时具有最高权限 # 这有助于避免在容器内部发生文件权限问题 USER root # 创建必要的目录并设置权限 # 如果这些目录是用于挂载卷或者运行时数据,并且基础镜像没有创建它们,那么这些指令可能仍然需要。 # 注意:chmod -R 777 给予了非常宽松的权限。虽然以 root 用户运行可以解决进程本身的访问问题, # 但这种权限设置在生产环境中需要谨慎评估,因为它允许任何用户对这些目录进行读、写、执行操作。 # 原 Dockerfile 中的 `./gradio_files` 是相对于 WORKDIR (/app) 的,所以这里是 /app/gradio_files。 # 新增 /app/pdf2zh_files 目录创建和权限设置 RUN mkdir -p /data \ && mkdir -p /.cache \ && mkdir -p /app/gradio_files \ && mkdir -p /.config/PDFMathTranslate \ && mkdir -p /app/pdf2zh_files \ && chmod -R 777 /data \ && chmod -R 777 /.cache \ && chmod -R 777 /app/gradio_files \ && chmod -R 777 /.config \ && chmod -R 777 /app/pdf2zh_files # 创建配置文件并添加基本配置 # 如果你需要覆盖基础镜像中的默认配置,或者基础镜像需要这个配置文件,那么这个步骤是必要的。 # 请确保 /.config/PDFMathTranslate/config.json 这个路径对于基础镜像来说是正确的。 # chmod 666 允许所有用户读写该文件。 RUN echo '{"USE_MODELSCOPE": "0", "MODEL_CACHE_DIR": "/.cache"}' > /.config/PDFMathTranslate/config.json \ && chmod 666 /.config/PDFMathTranslate/config.json # 设置默认的容器启动命令 # 基础镜像 ghcr.io/awwaawwa/pdfmathtranslate:dev 可能已经有自己的 CMD 或 ENTRYPOINT。 # 如果你想覆盖它,或者确保执行这个特定的命令,可以保留这行。 # 由于上面设置了 USER root,此命令将以 root 用户身份执行。 #CMD ["pdf2zh", "-i"] # --- 以下是原 Dockerfile 中的一些指令,在使用新的基础镜像后,它们很可能不再需要 --- # # # 系统依赖 # RUN apt-get update && apt-get install -y libgl1 \ # && rm -rf /var/lib/apt/lists/* # # 解释:系统依赖 libgl1 应该已经包含在基础镜像 ghcr.io/awwaawwa/pdfmathtranslate:dev 中(如果它需要的话)。 # # # 安装最新版本的 pdf2zh # RUN pip install --no-cache-dir pdf2zh==1.9.5 # # 解释:pdf2zh 工具本身就是基础镜像 ghcr.io/awwaawwa/pdfmathtranslate:dev 提供的核心功能,所以不需要再安装。 #