You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker多阶段构建报错:uvicorn不在PATH中,如何解决?

问题解决:多阶段构建FastAPI+Uvicorn Docker镜像时uvicorn找不到的错误

错误根源

你使用的pytorch/pytorch官方镜像基于conda环境,默认Python、pip均位于/opt/conda路径下。你的多阶段构建中,builder阶段额外安装了系统级的python3-pip,导致依赖(包括uvicorn)被安装到系统的/usr/local路径,但最终镜像实际调用的是conda环境的Python,因此无法找到uvicorn命令。

修复后的多阶段Dockerfile

# Stage 1: Build stage
FROM pytorch/pytorch:2.1.2-cuda12.1-cudnn8-runtime as builder

WORKDIR /usr/src

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# 直接使用镜像自带的conda环境,无需安装系统python3/pip
RUN apt-get update \
    && apt-get install -y --no-install-recommends git \
    && pip install --upgrade pip setuptools wheel

COPY ./requirements.txt .
RUN pip install -r requirements.txt

# 清理冗余依赖和缓存,减小镜像体积
RUN apt-get remove -y git \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Stage 2: Final stage
FROM pytorch/pytorch:2.1.2-cuda12.1-cudnn8-runtime

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1

# 仅安装必要系统依赖,无需系统python3
RUN apt-get update \
    && apt-get install -y --no-install-recommends ca-certificates \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 复制builder阶段conda环境下的所有依赖(含uvicorn)
COPY --from=builder /opt/conda /opt/conda

# 确保conda的bin目录在PATH最前端,优先调用conda环境的命令
ENV PATH=/opt/conda/bin:$PATH

WORKDIR /usr/src

COPY ./app/ ./app/

补充说明

  1. 全程依赖pytorch镜像自带的conda环境,彻底避免系统Python与conda环境的路径冲突
  2. 复制完整的conda环境目录,保证所有通过pip安装的依赖都能被正确迁移到最终镜像
  3. 清理apt缓存进一步压缩镜像体积
  4. 原docker-compose.yml无需修改,保持原有启动命令即可

内容的提问来源于stack exchange,提问作者tobias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 19:03:21