Docker运行报错/usr/bin/python: can't find '__main__' module in '.'如何解决
报错原因
- Dockerfile中设置了
ENTRYPOINT ["python"],容器启动时默认执行python命令,没有传入待执行的Python脚本路径时,python解释器会自动查找当前工作目录下的__main__.py模块运行,而你当前的镜像仅安装了依赖环境,没有拷贝对应Python业务代码到容器内,也没有在启动时指定执行文件,因此触发该报错。
解决方法
根据你的使用场景选择对应方案即可:
- 若需要临时运行指定Python脚本:启动容器时传入脚本路径即可,例如本地的
app.py可以用以下命令启动,将本地脚本挂载到容器内执行:docker run -v $(pwd)/app.py:/app.py <你的镜像名> /app.py - 若需要镜像默认启动就执行固定业务脚本:修改Dockerfile,将代码拷贝到镜像内并调整启动指令:
# 在原有Dockerfile的ENTRYPOINT指令前新增拷贝代码的指令 COPY app.py . # 调整启动指令,以下两种二选一即可 # 方案1:固定启动执行app.py,启动时无法覆盖执行其他脚本 ENTRYPOINT ["python", "app.py"] # 方案2:默认执行app.py,启动时可以传入其他脚本路径覆盖默认值 ENTRYPOINT ["python"] CMD ["app.py"] - 若需要进入容器调试:启动时覆盖默认入口为bash即可:
docker run -it --entrypoint bash <你的镜像名> - 若只需要打开Python交互式终端:启动时增加
-it参数即可:docker run -it <你的镜像名>
内容的提问来源于stack exchange,提问作者One Developer
相关产品推荐
相关产品推荐

