This commit is contained in:
parent
d0f499bb1c
commit
a24109a629
26
Dockerfile
26
Dockerfile
|
|
@ -4,23 +4,24 @@
|
||||||
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 \
|
||||||
git \
|
git \
|
||||||
curl && \
|
curl && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
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"]
|
||||||
|
|
|
||||||
|
|
@ -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"]
|
||||||
Loading…
Reference in New Issue