docker compose中的Psuedo tty分配

docker compose中的Psuedo tty分配,docker,docker-compose,tty,Docker,Docker Compose,Tty,在docker中,我可以简单地使用-t开关让docker运行分配一个伪tty(在这些示例中,我使用nohup从我的真实tty分离): 我正试图用docker compose实现同样的结果。我有以下docker compose.yml: version: "3" services: myservice: image: debian tty: true 我在运行它时使用和不使用nohup: $ docker-compose run myservi

在docker中,我可以简单地使用
-t
开关让
docker运行
分配一个伪tty(在这些示例中,我使用
nohup
从我的真实tty分离):

我正试图用docker compose实现同样的结果。我有以下
docker compose.yml

version: "3"
services:
  myservice:
    image: debian
    tty: true
我在运行它时使用和不使用
nohup

$       docker-compose run myservice tty   # Produces "/dev/pts/0"
$ nohup docker-compose run myservice tty   # Produces "not a tty"
声明我可以使用
-T
禁用伪tty的分配,但似乎没有明确启用它的方法(默认情况下应该分配tty,因此不需要这样做)

-T
禁用伪tty分配。默认情况下,
docker compose run
分配TTY


我做错什么了吗?

在您的
docker compose.yml
中为您的服务包括以下内容:

services:
  myservice:
    ...
    stdin_open: true # docker run -i
    tty: true        # docker run -t

在您的
docker compose.yml
中为您的服务包括以下内容:

services:
  myservice:
    ...
    stdin_open: true # docker run -i
    tty: true        # docker run -t

似乎您想在后台运行`docker compose run-d myservice
,您可以使用
-d`,因为nohup将服务发送到后台
nohup
,在我的问题中,它只是模拟我在执行脚本时所处的情况。该脚本没有tty。实际图像包含一些需要tty的代码。似乎您希望在后台运行`docker compose run-d myservice
,您可以使用
-d`,因为我的问题中的nohup send service to background
nohup
只是模拟我在执行脚本时所处的情况。该脚本没有tty。实际图像包含一些需要tty的代码。