docker-compose exec python 输入设备不是 AWS EC2 UserData 中的 TTY
Posted
技术标签:
【中文标题】docker-compose exec python 输入设备不是 AWS EC2 UserData 中的 TTY【英文标题】:docker-compose exec python the input device is not a TTY in AWS EC2 UserData 【发布时间】:2018-09-18 08:06:31 【问题描述】:我正在使用 EC2 UserData 引导实例。
跟踪bootstrap执行日志/var/log/cloud-init-output.log
,发现脚本停止在:
+ docker-compose exec web python /var/www/flask/app/db_fixtures.py
the input device is not a TTY
这个命令似乎是在交互模式下运行的,但是为什么呢?以及如何强制此命令的非交互模式(docker-compose exec)?
【问题讨论】:
【参考方案1】:引用the docker-compose exec
docs:
命令默认分配一个 TTY,因此您可以使用诸如 docker-compose exec web sh 之类的命令来获得交互式提示。
要禁用此行为,您可以使用 -T
标志来禁用伪 tty 分配:
docker-compose exec -T web python /var/www/flask/app/db_fixtures.py
或者在运行docker-compose exec
之前将COMPOSE_INTERACTIVE_NO_CLI
environment variable设置为1:
export COMPOSE_INTERACTIVE_NO_CLI=1
【讨论】:
是的..我明白了。尽管如此,你应该得到 +1。-T
效果很好。但是设置COMPOSE_INTERACTIVE_NO_CLI=1
给我一个ValueError: I/O operation on closed file.
错误。以上是关于docker-compose exec python 输入设备不是 AWS EC2 UserData 中的 TTY的主要内容,如果未能解决你的问题,请参考以下文章
Docker1指令,docker-compose,Dockerfile