Dockerfile 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. FROM python:3.10-slim-bookworm
  2. # 设置环境变量
  3. ENV PYTHONDONTWRITEBYTECODE=1 \
  4. PYTHONUNBUFFERED=1 \
  5. TZ=Asia/Shanghai \
  6. LANG=C.UTF-8 \
  7. # 显式指定 Chromium 路径
  8. CHROME_BIN=/usr/bin/chromium \
  9. # 设置显示端口 (配合 Xvfb)
  10. DISPLAY=:99 \
  11. # 防止 XDG 目录报错
  12. XDG_CONFIG_HOME=/tmp/xdg_config
  13. # 1. 安装系统依赖
  14. # xvfb: 虚拟显示器
  15. # chromium: 浏览器
  16. # libgl1: opencv/ddddocr 必须的图形库依赖
  17. # dumb-init: 僵尸进程回收
  18. RUN apt-get update && apt-get install -y --no-install-recommends \
  19. chromium \
  20. chromium-driver \
  21. xvfb \
  22. xauth \
  23. fonts-noto-cjk \
  24. fonts-wqy-zenhei \
  25. procps \
  26. dumb-init \
  27. libgl1 \
  28. libglib2.0-0 \
  29. # --- 新增 DBus 依赖 ---
  30. dbus \
  31. dbus-x11 \
  32. # --- 原有的 Chromium 依赖 ---
  33. libnss3 \
  34. libnspr4 \
  35. libatk1.0-0 \
  36. libatk-bridge2.0-0 \
  37. libcups2 \
  38. libdrm2 \
  39. libxkbcommon0 \
  40. libxcomposite1 \
  41. libxdamage1 \
  42. libxfixes3 \
  43. libxrandr2 \
  44. libgbm1 \
  45. libasound2 \
  46. libpango-1.0-0 \
  47. libpangocairo-1.0-0 \
  48. && apt-get clean \
  49. && rm -rf /var/lib/apt/lists/*
  50. RUN dbus-uuidgen > /var/lib/dbus/machine-id
  51. # 2. 设置工作目录
  52. WORKDIR /app
  53. # 3. 复制依赖并安装
  54. COPY requirements.txt .
  55. # 使用清华源,并额外指定 torch 的源(如果是 requirements.txt 里写了 index-url 则这里不需要 -f)
  56. RUN pip install --no-cache-dir -r requirements.txt
  57. # 4. 复制启动脚本 (处理 Xvfb 锁文件)
  58. COPY entrypoint.sh /entrypoint.sh
  59. RUN chmod +x /entrypoint.sh
  60. # 5. 复制项目代码
  61. COPY . .
  62. # 6. 创建临时目录权限
  63. RUN mkdir -p /app/data/temp_browser_data && chmod 777 /app/data/temp_browser_data
  64. # 7. 入口点
  65. ENTRYPOINT ["/usr/bin/dumb-init", "--", "/entrypoint.sh"]