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

Docker运行时出现ModuleNotFoundError: No module named 'flask'问题求助

解决Docker容器中ModuleNotFoundError: No module named 'flask'的问题

问题根源

你采用了Docker多阶段构建,但仅将第一阶段(backend-builder)的代码目录/app复制到了第二阶段,没有同步该阶段安装的Python依赖。Flask等依赖是安装在backend-builder阶段Python环境的site-packages目录下,而非/app内,导致第二阶段运行容器时找不到对应的模块。

解决方案

方案1:完善多阶段构建,同步依赖

修改Dockerfile,在第二阶段同时复制代码和已安装的依赖文件:

# Use an official Python runtime as the base image
FROM python:3.9 AS backend-builder

# Set the working directory in the container
WORKDIR /app

# Copy the backend code into the container
COPY ./backend /app

# Install Python dependencies, including Flask
RUN pip install -r requirements.txt

#------------------Stage 1 Ends----------------------
#------------------Stage 2 Start---------------------
FROM python:3.9-slim-buster

# Set the working directory in the container
WORKDIR /app

# 复制代码和已安装的依赖包、可执行文件
COPY --from=backend-builder /app /app
COPY --from=backend-builder /usr/local/lib/python3.9/site-packages /usr/local/lib/python3.9/site-packages
COPY --from=backend-builder /usr/local/bin /usr/local/bin

# Expose the port
EXPOSE 5000

# Command to run the application
CMD ["python", "app.py"]

方案2:改用单阶段构建(适合对镜像体积要求不高的场景)

如果不需要极致压缩镜像大小,可简化为单阶段构建,避免依赖同步问题:

# Use an official Python runtime as the base image
FROM python:3.9-slim-buster

# Set the working directory in the container
WORKDIR /app

# Copy the backend code into the container
COPY ./backend /app

# Install Python dependencies, including Flask
RUN pip install -r requirements.txt

# Expose the port
EXPOSE 5000

# Command to run the application
CMD ["python", "app.py"]

验证步骤

  1. 确认requirements.txt中包含Flask依赖(例如:Flask>=2.0.0)
  2. 重新构建镜像:docker build -t my-flask-app .
  3. 启动容器:docker run -p 5000:5000 my-flask-app

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:25:07