evalscope_v0.17.0/Dockerfile

60 lines
1.9 KiB
Docker
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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