This commit is contained in:
hailin 2025-07-09 14:03:55 +08:00
parent d0f499bb1c
commit a24109a629
2 changed files with 72 additions and 13 deletions

View File

@ -4,7 +4,7 @@
FROM python:3.10-slim AS builder FROM python:3.10-slim AS builder
ENV DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=noninteractive
# 系统依赖:编译 C/C++ 扩展 & git 拉源码 # 安装系统依赖
RUN apt-get update && \ RUN apt-get update && \
apt-get install -y --no-install-recommends \ apt-get install -y --no-install-recommends \
build-essential \ build-essential \
@ -14,13 +14,14 @@ RUN apt-get update && \
WORKDIR /build WORKDIR /build
# 先复制 requirements 目录,利用 Docker layer cache # 拷贝 requirements 并安装依赖
COPY evalscope.0.17.0/requirements ./evalscope/requirements COPY evalscope.0.17.0/requirements ./evalscope/requirements
# 更新 pip & 预装常用 build tools # 更新 pip并提前装 antlr4-runtime
RUN pip install --upgrade pip setuptools wheel RUN pip install --upgrade pip setuptools wheel && \
pip install --no-cache-dir --prefix=/install antlr4-python3-runtime==4.9.3
# 把所有依赖装进 /install 目录(✳️ 关键) # 安装 EvalScope 所有依赖到 /install
RUN pip install --no-cache-dir --prefix=/install \ RUN pip install --no-cache-dir --prefix=/install \
-r ./evalscope/requirements/framework.txt \ -r ./evalscope/requirements/framework.txt \
-r ./evalscope/requirements/opencompass.txt \ -r ./evalscope/requirements/opencompass.txt \
@ -32,11 +33,11 @@ RUN pip install --no-cache-dir --prefix=/install \
-r ./evalscope/requirements/perf.txt \ -r ./evalscope/requirements/perf.txt \
-r ./evalscope/requirements/rag.txt -r ./evalscope/requirements/rag.txt
# 安装 evalscope 本体(非 editable减少后续 COPY # 安装 EvalScope 本体
COPY evalscope.0.17.0/ ./evalscope COPY evalscope.0.17.0/ ./evalscope
RUN pip install --no-cache-dir --prefix=/install ./evalscope RUN pip install --no-cache-dir --prefix=/install ./evalscope
# 仅带上入口脚本 # 拷贝入口文件
COPY gradio_ui.py . COPY gradio_ui.py .
######################## ########################
@ -45,15 +46,14 @@ COPY gradio_ui.py .
FROM python:3.10-slim AS runtime FROM python:3.10-slim AS runtime
ENV DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=noninteractive
# 把 builder 阶段产物注入到 /usr/local 下 # 拷贝构建阶段所有已安装包
# /install/bin 里可能有可执行文件site-packages 在 /install/lib/…
COPY --from=builder /install /usr/local COPY --from=builder /install /usr/local
COPY --from=builder /build/gradio_ui.py /app/gradio_ui.py COPY --from=builder /build/gradio_ui.py /app/gradio_ui.py
WORKDIR /app WORKDIR /app
EXPOSE 7900 7901 EXPOSE 7900 7901
# 可选:彻底关闭 pip 缓存,避免 runtime 再次安装时产生垃圾 # 防止 runtime 安装时产生缓存垃圾
ENV PIP_NO_CACHE_DIR=1 ENV PIP_NO_CACHE_DIR=1
CMD ["python3", "gradio_ui.py"] CMD ["python3", "gradio_ui.py"]

59
Dockerfile.ok Normal file
View File

@ -0,0 +1,59 @@
########################
# 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 7901
# 可选:彻底关闭 pip 缓存,避免 runtime 再次安装时产生垃圾
ENV PIP_NO_CACHE_DIR=1
CMD ["python3", "gradio_ui.py"]