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

Docker容器运行Flask应用报错无法找到run.py文件问题求助

问题根因

你的Dockerfile使用了多阶段构建语法,但未将第一阶段构建的项目文件复制到最终运行的镜像层,最终启动的python:3.9.7-slim镜像里根本不存在/NewBackend目录和run.py文件,CMD指令找不到指定文件就会默认从根路径查找,因此抛出//run.py不存在的报错。

修正方案

你可以根据需求选择以下任意一种方式调整Dockerfile:

方案1:删除冗余的多阶段结构,统一用python基础镜像

你之前的多阶段写法完全没有复用第一阶段的产出,属于无效写法,可以直接简化为单阶段构建:

# 统一使用官方python镜像作为基础,不需要额外引入alpine
FROM python:3.9.7-slim

WORKDIR /NewBackend

# 安装系统依赖
RUN apt-get update \
    && apt-get -y install libpq-dev gcc \
    && rm -rf /var/lib/apt/lists/*

# 复制项目文件
COPY . /NewBackend

# 安装python依赖
RUN pip install --upgrade pip \
    && pip --no-cache-dir install -r requirements.txt psycopg2

EXPOSE 5000

CMD ["python","run.py"]

方案2:完善多阶段构建逻辑,复用第一阶段产物

如果你确实需要多阶段构建减小最终镜像体积,可以补充第一阶段到第二阶段的文件复制逻辑:

# 第一阶段:构建依赖
FROM python:3.9.7-slim AS builder

WORKDIR /NewBackend

RUN apt-get update \
    && apt-get -y install libpq-dev gcc

COPY requirements.txt .
RUN pip install --user --no-cache-dir -r requirements.txt psycopg2

# 第二阶段:运行时镜像
FROM python:3.9.7-slim

WORKDIR /NewBackend

# 复制第一阶段安装的依赖
COPY --from=builder /root/.local/lib/python3.9/site-packages /usr/local/lib/python3.9/site-packages
# 复制项目代码
COPY . /NewBackend

EXPOSE 5000

CMD ["python","run.py"]
验证方法

构建镜像后可以先执行以下命令确认run.py是否存在,替换<你的镜像名>为你实际的镜像名称:
docker run --rm --entrypoint ls <你的镜像名> /NewBackend
如果输出能看到run.py就说明文件复制正常,再正常启动容器即可。

内容的提问来源于stack exchange,提问作者Fazal Ghani Qureshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 01:39:07