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

Docker部署Flask遇ModuleNotFoundError: No module named 'wsgi'问题

问题分析与解决方案

你的核心问题是Gunicorn在Docker容器中无法找到wsgi模块,导致Flask服务启动失败,进而引发Nginx 502错误。结合你的配置和操作记录,问题根源在于容器内文件路径不匹配和Gunicorn启动命令格式错误,下面是分步排查和解决方法:

一、错误原因拆解

  1. 容器内文件路径认知错误
    你的docker-compose.yml中flask服务的build.context设置为app,这意味着Docker构建时会把主机上project_root/app目录下的所有文件,复制到容器的/var/www/目录(对应Dockerfile里的WORKDIR /var/www/和ADD . /var/www/)。也就是说,容器内的wsgi.py实际路径是/var/www/wsgi.py,而非你尝试的主机路径/home/project_root/app/wsgi.py,也不是错误的容器路径/var/www/app/wsgi.py。

  2. Gunicorn启动命令格式问题
    Gunicorn启动Flask应用的标准格式是[模块名]:[Flask应用实例],而不是直接传入文件路径。你之前尝试的wsgi:app是正确格式,但报错可能是因为文件复制不完整或Python模块导入问题。

二、分步解决方案

步骤1:验证容器内文件结构

先确认容器内是否正确复制了wsgi.py和相关文件:

docker-compose run --rm flask ls -l /var/www/

执行后你应该能看到wsgi.py、requirements.txt以及你的Flask应用文件/文件夹。如果看不到wsgi.py,检查是否存在.dockerignore文件排除了它,或者ADD . /var/www/命令是否正确执行。

步骤2:修正Dockerfile中的启动命令

确保Dockerfile的CMD使用正确的模块格式,保持其他命令不变:

FROM python:3.6.8-alpine3.9
WORKDIR /var/www/
ADD . /var/www/
RUN apk add --no-cache build-base libffi-dev openssl-dev ncurses-dev
RUN python -m pip install --upgrade pip
RUN pip install -r requirements.txt
EXPOSE 5000
# 正确的启动命令:模块名wsgi,应用实例app
CMD [ "gunicorn", "-w", "4", "--bind", "0.0.0.0:5000", "wsgi:app"]

步骤3:确保Flask应用模块可被导入

你的wsgi.py中有from app import create_app,这要求容器内/var/www/目录下必须存在一个名为app的Python模块:

  • 即存在/var/www/app/__init__.py文件,且该文件中定义了create_app函数;
  • 如果你的Flask应用入口是app.py而非app文件夹,需要修改导入语句为from app import app(假设app.py中定义了app = Flask(__name__)),并保持Gunicorn命令为wsgi:app(因为wsgi.py中最终导出的实例是app)。

步骤4:重新构建并启动服务

清理旧容器并重新构建,避免缓存干扰:

docker-compose down --volumes
docker-compose build --no-cache
docker-compose up -d

查看Flask服务日志确认启动状态:

docker-compose logs flask

三、额外排查点

  • 检查requirements.txt是否正确包含gunicorn和所有Flask依赖包;
  • 确认容器内Python版本(3.6)与本地开发环境一致,避免版本兼容性问题;
  • 查看wsgi.py中是否有其他导入错误,比如from app import create_app中的app模块是否存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:42:44