60 lines
1.7 KiB
Docker
60 lines
1.7 KiB
Docker
########################
|
||
# 1️⃣ Build stage
|
||
########################
|
||
FROM python:3.10-slim AS builder
|
||
ENV DEBIAN_FRONTEND=noninteractive
|
||
|
||
# 安装系统依赖
|
||
RUN apt-get update && \
|
||
apt-get install -y --no-install-recommends \
|
||
build-essential \
|
||
git \
|
||
curl && \
|
||
rm -rf /var/lib/apt/lists/*
|
||
|
||
WORKDIR /build
|
||
|
||
# 拷贝 requirements 并安装依赖
|
||
COPY evalscope.0.17.0/requirements ./evalscope/requirements
|
||
|
||
# 更新 pip,并提前装 antlr4-runtime
|
||
RUN pip install --upgrade pip setuptools wheel && \
|
||
pip install --no-cache-dir --prefix=/install antlr4-python3-runtime==4.9.3
|
||
|
||
# 安装 EvalScope 所有依赖到 /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 本体
|
||
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
|
||
|
||
# 拷贝构建阶段所有已安装包
|
||
COPY --from=builder /install /usr/local
|
||
COPY --from=builder /build/gradio_ui.py /app/gradio_ui.py
|
||
|
||
WORKDIR /app
|
||
EXPOSE 7900 7901
|
||
|
||
# 防止 runtime 安装时产生缓存垃圾
|
||
ENV PIP_NO_CACHE_DIR=1
|
||
|
||
CMD ["python3", "gradio_ui.py"]
|