使用Docker Compose运行带输入参数的Python脚本遇阻求助
问题解决:Docker Compose运行交互式Python脚本生成Excel
问题分析
你的配置逻辑本身没问题,但脚本需要交互式输入,直接用docker-compose up运行时,默认不会把终端输入传递给容器,导致脚本卡在等待输入的状态,看起来像是没执行main.py。另外当前卷挂载路径是正确的,但要确保生成的Excel能正确映射到宿主机。
修复方案
1. 用正确的命令启动交互式容器
直接用docker-compose up不适合交互式任务,推荐用docker-compose run命令,它会自动绑定终端输入输出:
docker-compose run 2numbers
如果非要用docker-compose up,需要加上--attach参数绑定终端:
docker-compose up --attach 2numbers
2. 优化脚本输出路径(可选)
为了确保Excel精准生成到宿主机当前目录,可以在脚本里指定容器内的绝对挂载路径(容器内/main对应宿主机当前目录):
修改main.py的保存代码:
df.to_excel("/main/test.xlsx")
3. 排查容器执行问题
如果还是异常,可通过以下方式验证:
- 查看容器日志确认脚本状态:
docker logs container_2numbers - 进入容器手动执行脚本测试:
docker exec -it container_2numbers python main.py
可选优化:让脚本执行完自动退出
如果不需要容器持续运行,可去掉docker-compose.yml里的tty: true(保留stdin_open: true即可支持交互),这样脚本生成Excel后容器会自动停止:
version: '3.8' services: 2numbers: build: . image: 2numbers container_name: container_2numbers stdin_open: true volumes: - ./:/main command: python main.py
内容的提问来源于stack exchange,提问作者jdaston
相关产品推荐
相关产品推荐

