From a24109a62968139683cad8576eabc664327624c0 Mon Sep 17 00:00:00 2001 From: hailin Date: Wed, 9 Jul 2025 14:03:55 +0800 Subject: [PATCH] . --- Dockerfile | 26 +++++++++++------------ Dockerfile.ok | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 13 deletions(-) create mode 100644 Dockerfile.ok diff --git a/Dockerfile b/Dockerfile index f895894..8a8cd59 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,23 +4,24 @@ 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 && \ + build-essential \ + git \ + curl && \ rm -rf /var/lib/apt/lists/* WORKDIR /build -# 先复制 requirements 目录,利用 Docker layer cache +# 拷贝 requirements 并安装依赖 COPY evalscope.0.17.0/requirements ./evalscope/requirements -# 更新 pip & 预装常用 build tools -RUN pip install --upgrade pip setuptools wheel +# 更新 pip,并提前装 antlr4-runtime +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 \ -r ./evalscope/requirements/framework.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/rag.txt -# 安装 evalscope 本体(非 editable,减少后续 COPY) +# 安装 EvalScope 本体 COPY evalscope.0.17.0/ ./evalscope RUN pip install --no-cache-dir --prefix=/install ./evalscope -# 仅带上入口脚本 +# 拷贝入口文件 COPY gradio_ui.py . ######################## @@ -45,15 +46,14 @@ COPY gradio_ui.py . 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 再次安装时产生垃圾 +# 防止 runtime 安装时产生缓存垃圾 ENV PIP_NO_CACHE_DIR=1 CMD ["python3", "gradio_ui.py"] diff --git a/Dockerfile.ok b/Dockerfile.ok new file mode 100644 index 0000000..f895894 --- /dev/null +++ b/Dockerfile.ok @@ -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"]