【问题标题】:docker-compose exec python the input device is not a TTY in AWS EC2 UserDatadocker-compose exec python 输入设备不是 AWS EC2 UserData 中的 TTY
【发布时间】: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)?

【问题讨论】:

    标签: docker amazon-ec2 automation docker-compose tty


    【解决方案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. 错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2018-04-12
    • 2017-08-23
    • 2021-04-06
    • 1970-01-01
    • 2015-06-05
    相关资源
    最近更新 更多