From aa1b087090ab95fac33ed123e713365de92ea2a6 Mon Sep 17 00:00:00 2001 From: zcr Date: Tue, 23 Dec 2025 15:18:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20docker=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=EF=BC=8C=E6=9B=BF=E6=8D=A2pip=E4=B8=BAuv=20=E5=8A=A0?= =?UTF-8?q?=E9=80=9F=E6=9E=84=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 63 ++++++++++++++++++++++------------------------ docker-compose.yml | 2 +- 2 files changed, 31 insertions(+), 34 deletions(-) diff --git a/Dockerfile b/Dockerfile index cbab6a5..b3ae81f 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,40 +1,37 @@ -# Change CUDA and cuDNN version here +FROM ghcr.io/astral-sh/uv:latest AS uv_bin FROM nvidia/cuda:12.4.1-base-ubuntu22.04 -ARG PYTHON_VERSION=3.11 -ENV DEBIAN_FRONTEND=noninteractive +# 1. 基础环境配置 +ENV UV_LINK_MODE=copy \ + UV_COMPILE_BYTECODE=1 \ + PYTHONUNBUFFERED=1 \ + # 核心:强制 uv 把虚拟环境建在 /app/.venv + UV_PROJECT_ENVIRONMENT=/app/.venv + +COPY --from=uv_bin /uv /uvx /bin/ + +# 2. 安装系统依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ - software-properties-common \ - wget \ - && add-apt-repository ppa:deadsnakes/ppa \ - && apt-get update && apt-get install -y --no-install-recommends \ - python$PYTHON_VERSION \ - python$PYTHON_VERSION-dev \ - python$PYTHON_VERSION-venv \ - && wget https://bootstrap.pypa.io/get-pip.py -O get-pip.py \ - && python$PYTHON_VERSION get-pip.py \ - && rm get-pip.py \ - && ln -sf /usr/bin/python$PYTHON_VERSION /usr/bin/python \ - && ln -sf /usr/local/bin/pip$PYTHON_VERSION /usr/local/bin/pip \ - && python --version \ - && pip --version \ - && apt-get purge -y --auto-remove software-properties-common \ - && apt-get clean \ - && rm -rf /var/lib/apt/lists/* - -####### Add your own installation commands here ####### -# RUN pip install some-package -# RUN wget https://path/to/some/data/or/weights - RUN apt-get update && apt-get install ffmpeg libsm6 libxext6 -y \ - && apt install -y build-essential g++ + ffmpeg libsm6 libxext6 build-essential g++ \ + && apt-get clean && rm -rf /var/lib/apt/lists/* WORKDIR /app -COPY . /app -# Install litserve and requirements -RUN pip install --no-cache-dir litserve==0.2.16 -RUN pip install -r requirements-GPU.txt -RUN pip install opencv-python +# 3. 安装依赖 (不加 --system,让 uv 创建受管的虚拟环境) +# 这里会根据 pyproject.toml 自动下载并安装 Python 3.11 +COPY pyproject.toml uv.lock ./ +RUN uv sync --frozen --no-dev --no-install-project --python 3.11 + +# 4. 拷贝项目文件并安装项目本身 +COPY . . +RUN uv sync --frozen --no-dev --python 3.11 + +# 5. 【最关键】将虚拟环境的 bin 目录提到最前面 +# 注意:uv sync 创建的 python 就在这个目录下 +ENV PATH="/app/.venv/bin:$PATH" + EXPOSE 8000 -CMD ["python", "litserver_main.py"] -#CMD ["tail", "-f","/dev/null"] + +# 验证路径并运行 +# 此时运行 python 实际上是运行 /app/.venv/bin/python +CMD ["uv", "run","litserver_main.py"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index f3b7ae5..6798ea4 100755 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,6 +13,6 @@ services: reservations: devices: - driver: nvidia - device_ids: [ '1' ] + device_ids: [ '0' ] capabilities: - gpu \ No newline at end of file