# syntax=docker/dockerfile:1 # ============================================================================= # Dockerfile.base — 预装所有系统依赖和 Python 包的 base 镜像 # 仅在 requirements.txt 变化时重建,日常部署无需重复安装依赖 # # 构建:docker build -f Dockerfile.base -t lq-agent-base:latest . # 更新依赖后重建:docker build -f Dockerfile.base -t lq-agent-base:latest --no-cache . # ============================================================================= FROM python:3.12-slim # 接收宿主机传入的代理配置(BuildKit 需显式声明 ARG 才能传递到 RUN 环境) ARG HTTP_PROXY ARG HTTPS_PROXY ARG http_proxy ARG https_proxy ARG NO_PROXY ARG no_proxy ENV HTTP_PROXY=${HTTP_PROXY} \ HTTPS_PROXY=${HTTPS_PROXY} \ http_proxy=${http_proxy} \ https_proxy=${https_proxy} \ NO_PROXY=${NO_PROXY} \ no_proxy=${no_proxy} # 替换为阿里云 apt 源(Debian 12 使用 DEB822 格式) RUN sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources && \ sed -i 's|security.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debian.sources # 安装 OpenCV 系统依赖及 LibreOffice(docx/doc 转 PDF) # cache mount 避免每次重新下载 deb 包 RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ 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 \ # LibreOffice(用于 docx/doc 转 PDF) libreoffice-writer \ libreoffice-core \ # 中文字体(PDF 转换中文支持) fonts-wqy-zenhei \ --no-install-recommends ENV DEBIAN_FRONTEND=noninteractive \ TZ=Asia/Shanghai # 创建虚拟环境并设入 PATH RUN chmod 777 /tmp \ && python -m venv /venv ENV PATH="/venv/bin:$PATH" # 安装 Python 依赖(cache mount 缓存 pip 下载,requirements.txt 不变时仅首次下载) COPY requirements.txt /tmp/ RUN --mount=type=cache,target=/root/.cache/pip,sharing=locked \ /venv/bin/pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple \ && /venv/bin/pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn \ && /venv/bin/pip --default-timeout=1800 install -r /tmp/requirements.txt