Docker部署FastAPI报错:无法找到main模块求助
排查Docker部署FastAPI时"Could not import module 'main'"错误
核心问题分析
这个错误本质是uvicorn在容器当前工作目录下找不到main.py文件,结合你的目录结构和Dockerfile,主要排查以下几个方向:
1. 镜像构建的上下文路径错误
你的Dockerfile和main.py都在src/backend目录下,但如果是在src目录执行docker build命令,COPY . /app会把整个src目录内容复制到容器的/app目录,此时main.py实际路径是/app/backend/main.py,而非/app/main.py,uvicorn自然找不到指定模块。
解决方法:
- 切换到
src/backend目录下执行构建命令:cd src/backend docker build -t your-image-name . - 若必须在
src目录构建,修改Dockerfile中的COPY指令:# 仅复制backend目录下的内容到/app COPY backend /app
2. 验证容器内文件路径
在Dockerfile中添加调试命令,确认main.py是否在预期的/app目录:
FROM python:3.10 WORKDIR /app COPY requirements.txt /app/ RUN pip install --no-cache-dir -r requirements.txt COPY . /app # 添加此行查看/app目录内容 RUN ls -la /app CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
重新构建时查看输出的目录列表,若没有main.py,说明COPY的源路径错误,需调整。
3. 文件名大小写问题
确认文件确实是main.py(全小写),Linux容器环境区分文件名大小写,若实际是Main.py或其他大小写组合,uvicorn会无法识别。
内容的提问来源于stack exchange,提问作者felipecastroo
相关产品推荐
相关产品推荐

