FROM python:3.12-slim

# 安装 OpenCV 系统依赖（更完整的列表）
RUN apt-get update && apt-get install -y \
    # OpenCV 核心依赖
    libgl1 \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libxrender1 \
    # X11 库（OpenCV 需要）
    libxcb1 \
    libxcb-shm0 \
    libxcb-icccm4 \
    libxcb-image0 \
    libxcb-keysyms1 \
    libxcb-randr0 \
    libxcb-render-util0 \
    libxcb-render0 \
    libxcb-shape0 \
    libxcb-sync1 \
    libxcb-xfixes0 \
    libxcb-xinerama0 \
    libxcb-xkb1 \
    libxkbcommon-x11-0 \
    # 其他可能需要的库
    libfontconfig1 \
    libfreetype6 \
    && rm -rf /var/lib/apt/lists/*

ENV DEBIAN_FRONTEND=noninteractive \
    TZ=Asia/Shanghai

# 安装系统依赖包并创建虚拟环境
RUN chmod 777 /tmp \
    && python -m venv /venv

ENV PATH="/venv/bin:$PATH"

# 先复制 requirements 文件安装依赖（利用缓存）
COPY requirements.txt /tmp/
RUN /venv/bin/pip config set global.index-url https://mirrors.aliyun.com/pypi/simple \
    && /venv/bin/pip config set install.trusted-host mirrors.aliyun.com \
    && /venv/bin/pip --default-timeout=1800 install -r /tmp/requirements.txt \
    && rm -rf /root/.cache

# 设置工作目录并复制项目文件
WORKDIR /app
COPY . /app

EXPOSE 8001
# 确保脚本可执行
RUN chmod 777 run.sh

# 使用虚拟环境运行脚本
#CMD ["/venv/bin/gunicorn", "-c", "gunicorn_config.py", "server.app:app"]
# 带参数的启动方式
CMD ["/venv/bin/python", "server/app.py", "--host", "0.0.0.0", "--port", "8001"]