Docker部署FastAPI遇ModuleNotFoundError:找不到'app'模块求助
解决FastAPI Docker部署的ModuleNotFoundError问题
1. 确认项目目录结构
确保项目包含必要的__init__.py文件,让Python将app识别为合法模块:
项目根目录/ ├── docker-compose.yml ├── Dockerfile ├── requirements.txt └── app/ ├── __init__.py # 必须存在 ├── main.py ├── api/ │ ├── __init__.py # 必须存在 │ └── router.py └── core/ ├── __init__.py # 必须存在 └── config.py
2. 修复docker-compose.yml配置
补充build字段路径,同时添加环境变量设置PYTHONPATH:
version: '3.8' services: web: build: . # 指向Dockerfile所在的项目根目录 command: uvicorn app.main:app --host 0.0.0.0 --reload volumes: - ./app:/app/app # 挂载本地app目录到容器内的/app/app,避免干扰PYTHONPATH environment: - PYTHONPATH=/app # 让Python能找到/app下的app模块 ports: - "8000:8000" depends_on: - db
3. 编写正确的Dockerfile
在项目根目录创建Dockerfile,确保依赖安装和目录配置正确:
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY ./app /app/app ENV PYTHONPATH=/app
4. 重新构建启动服务
执行以下命令重新构建镜像并启动:
docker-compose build docker-compose up
内容的提问来源于stack exchange,提问作者YuRim Jin
相关产品推荐
相关产品推荐

