FROM python:3.10-slim-bookworm # 设置环境变量 ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ TZ=Asia/Shanghai \ LANG=C.UTF-8 \ # 显式指定 Chromium 路径 CHROME_BIN=/usr/bin/chromium \ # 设置显示端口 (配合 Xvfb) DISPLAY=:99 \ # 防止 XDG 目录报错 XDG_CONFIG_HOME=/tmp/xdg_config # 1. 安装系统依赖 # xvfb: 虚拟显示器 # chromium: 浏览器 # libgl1: opencv/ddddocr 必须的图形库依赖 # dumb-init: 僵尸进程回收 RUN apt-get update && apt-get install -y --no-install-recommends \ chromium \ chromium-driver \ xvfb \ xauth \ fonts-noto-cjk \ fonts-wqy-zenhei \ procps \ dumb-init \ libgl1 \ libglib2.0-0 \ # --- 新增 DBus 依赖 --- dbus \ dbus-x11 \ # --- 原有的 Chromium 依赖 --- libnss3 \ libnspr4 \ libatk1.0-0 \ libatk-bridge2.0-0 \ libcups2 \ libdrm2 \ libxkbcommon0 \ libxcomposite1 \ libxdamage1 \ libxfixes3 \ libxrandr2 \ libgbm1 \ libasound2 \ libpango-1.0-0 \ libpangocairo-1.0-0 \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* RUN dbus-uuidgen > /var/lib/dbus/machine-id # 2. 设置工作目录 WORKDIR /app # 3. 复制依赖并安装 COPY requirements.txt . # 使用清华源,并额外指定 torch 的源(如果是 requirements.txt 里写了 index-url 则这里不需要 -f) RUN pip install --no-cache-dir -r requirements.txt # 4. 复制启动脚本 (处理 Xvfb 锁文件) COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh # 5. 复制项目代码 COPY . . # 6. 创建临时目录权限 RUN mkdir -p /app/temp_browser_data && chmod 777 /app/temp_browser_data # 7. 入口点 ENTRYPOINT ["/usr/bin/dumb-init", "--"] # 8. 通过启动脚本运行 CMD ["/entrypoint.sh"]