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"]