######################## # 1️⃣ Build stage ######################## FROM python:3.10-slim AS builder ENV DEBIAN_FRONTEND=noninteractive # 系统依赖:编译 C/C++ 扩展 & git 拉源码 RUN apt-get update && \ apt-get install -y --no-install-recommends \ build-essential \ git \ curl && \ rm -rf /var/lib/apt/lists/* WORKDIR /build # 先复制 requirements 目录,利用 Docker layer cache COPY evalscope.0.17.0/requirements ./evalscope/requirements # 更新 pip & 预装常用 build tools RUN pip install --upgrade pip setuptools wheel # 把所有依赖装进 /install 目录(✳️ 关键) RUN pip install --no-cache-dir --prefix=/install \ -r ./evalscope/requirements/framework.txt \ -r ./evalscope/requirements/opencompass.txt \ -r ./evalscope/requirements/vlmeval.txt \ -r ./evalscope/requirements/aigc.txt \ -r ./evalscope/requirements/app.txt \ -r ./evalscope/requirements/dev.txt \ -r ./evalscope/requirements/docs.txt \ -r ./evalscope/requirements/perf.txt \ -r ./evalscope/requirements/rag.txt # 安装 evalscope 本体(非 editable,减少后续 COPY) COPY evalscope.0.17.0/ ./evalscope RUN pip install --no-cache-dir --prefix=/install ./evalscope # 仅带上入口脚本 COPY gradio_ui.py . ######################## # 2️⃣ Runtime stage ######################## FROM python:3.10-slim AS runtime ENV DEBIAN_FRONTEND=noninteractive # 把 builder 阶段产物注入到 /usr/local 下 # /install/bin 里可能有可执行文件;site-packages 在 /install/lib/… COPY --from=builder /install /usr/local COPY --from=builder /build/gradio_ui.py /app/gradio_ui.py WORKDIR /app EXPOSE 7900 # 可选:彻底关闭 pip 缓存,避免 runtime 再次安装时产生垃圾 ENV PIP_NO_CACHE_DIR=1 CMD ["python3", "gradio_ui.py"]