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

使用Docker+Poetry启动FastAPI项目失败:uvicorn命令未找到

问题原因

Poetry 默认会为项目创建独立的虚拟环境,你通过 poetry install 安装的 uvicorn 被放在了这个虚拟环境的可执行目录中,而容器的默认 Shell 没有将这个目录加入 PATH,所以直接运行 uvicorn 会提示找不到命令。

解决方案

下面提供两种常用的解决方式,任选其一即可:

方式一:用 poetry run 执行命令

修改 docker-compose.yaml 中 backend 服务的 command,通过 poetry run 激活虚拟环境并启动 uvicorn:

backend:
  build:
    context: backend
  command: bash -c 'poetry run uvicorn src.presentation.main:app --host 0.0.0.0 --port 8000 --reload'
  # 其他配置保持不变

方式二:让 Poetry 安装到系统 Python 环境

修改 backend/Dockerfile,禁用 Poetry 的虚拟环境创建功能,让依赖直接安装到容器的系统 Python 环境中:

FROM python:3.11-slim

WORKDIR /backend

COPY . /backend

RUN pip install --upgrade pip && pip install poetry
# 禁用虚拟环境
RUN poetry config virtualenvs.create false
# 安装依赖(--no-root 可选,若不需要安装当前项目包则添加)
RUN poetry install

EXPOSE 8000

修改后,docker-compose.yaml 中的 command 可以保持原来的写法,直接运行 uvicorn 即可找到命令。

额外注意事项

你的 docker-compose.yaml 中给 backend 服务挂载了本地目录 - .:/backend,这会覆盖容器内 /backend 目录的内容。如果本地没有 Poetry 虚拟环境,或者虚拟环境路径不一致,可能会引发其他问题。如果是开发环境需要热重载,可以保留挂载,但建议确保本地和容器的 Poetry 配置一致;如果是生产环境,建议移除这个挂载卷,避免依赖环境混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 11:33:12