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/
补充说明
- 全程依赖pytorch镜像自带的conda环境,彻底避免系统Python与conda环境的路径冲突
- 复制完整的conda环境目录,保证所有通过pip安装的依赖都能被正确迁移到最终镜像
- 清理apt缓存进一步压缩镜像体积
- 原
docker-compose.yml无需修改,保持原有启动命令即可
内容的提问来源于stack exchange,提问作者tobias
相关产品推荐
相关产品推荐

