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

FastAPI通过Dockerfile可正常运行,使用docker-compose启动失败

问题:Docker Compose启动FastAPI容器提示uvicorn找不到

我有一个以FastAPI为后端、React为前端的项目,单独使用以下Dockerfile运行FastAPI时一切正常,且已通过curl验证:

FROM python

WORKDIR /app

COPY requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt

COPY ./app .

ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1

EXPOSE 8000

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

但使用以下docker-compose.yml配置启动时,后端容器报错:

version: "3.9"
services:
  backend:
    container_name: backend
    build: ./FastAPI
    ports:
      - "8000:8000"
    depends_on:
      - redis
    command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload

  frontend:
    container_name: frontend
    build: ./React/react-app
    ports:
      - "3000:3000"
    depends_on:
      - backend

  redis:
    container_name: redis
    image: "redis:alpine"

错误信息:

Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "uvicorn": executable file not found in $PATH: unknown
docker-compose process finished with exit code 1


解决方案

方案1:改用Python模块方式启动uvicorn

修改docker-compose.yml中后端服务的command为数组格式,通过python -m调用uvicorn,彻底避免PATH路径问题:

command: ["python", "-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]

方案2:将command改为exec数组格式

直接把docker-compose中的command改成和Dockerfile里CMD一致的数组形式,避免shell解析PATH时的差异:

command: ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000", "--reload"]

方案3:明确添加PATH路径(可选)

如果需要保留shell格式的command,可以修改Dockerfile,确保uvicorn所在目录被加入系统PATH:

FROM python

WORKDIR /app

COPY requirements.txt .

RUN pip install --no-cache-dir -r requirements.txt
# 明确添加pip默认安装可执行文件的目录到PATH
ENV PATH="/usr/local/bin:${PATH}"

COPY ./app .

ENV PYTHONUNBUFFERED=1
ENV PYTHONDONTWRITEBYTECODE=1

EXPOSE 8000

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:17:39