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

Docker启动Python容器报错无法找到main.py文件问题排查

问题原因

你的main.py已经通过COPY . .指令正确复制到镜像内,不存在文件丢失的问题,报错根源是Dockerfile中CMD的exec格式写法错误。
Docker规定,当ENTRYPOINT、CMD使用JSON数组形式(即exec模式)编写启动命令时,数组内每个元素必须是独立的命令参数,不能把多个参数拼接在同一个字符串中。你当前配置的CMD ["main.py btcusdt"],会把main.py btcusdt整体作为一个完整的文件路径传给python3,解释器自然找不到名称包含空格、后缀带btcusdt的文件,才会抛出对应的找不到文件错误。
你提供的本地项目结构如下,main.py直接位于项目构建上下文的根目录,复制进镜像后路径完全可以被正常访问:
项目文件结构

修复方法

修改Dockerfile中CMD段的写法,把脚本名和运行参数拆分为独立的数组元素即可:

FROM python:3.8

COPY requirements.txt requirements.txt
    
RUN pip install -r requirements.txt
COPY . .

ENTRYPOINT ["python3"]
CMD ["main.py", "btcusdt"]

修改完成后重新执行镜像构建命令,再用新镜像启动容器就可以正常运行脚本。

额外提示:你也可以选择shell格式编写启动命令,写法为CMD python3 main.py btcusdt,但exec模式是Docker官方推荐的写法,对进程信号的处理更稳定,优先使用拆分参数的exec模式配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:09:24