Docker compose up-d命令以某种方式覆盖了生产stdin和tty设置

Docker compose up-d命令以某种方式覆盖了生产stdin和tty设置,docker,docker-compose,production,Docker,Docker Compose,Production,需要帮助使docker compose运行我的容器,但无法在生产中登录到它。我试图通过覆盖compose file stdin和tty设置来实现这一点,但失败了。。。很多次 我已在我的撰写文件(docker compose.yml)中打开stdin和tty进行开发: 我为生产制作了另一个文件,并覆盖了一些设置,包括省略的stdin_open和tty(docker-compose-prod.yml) 使用docker compose重建图像后 docker-compose-f docker-com

需要帮助使docker compose运行我的容器,但无法在生产中登录到它。我试图通过覆盖compose file stdin和tty设置来实现这一点,但失败了。。。很多次

我已在我的撰写文件(docker compose.yml)中打开stdin和tty进行开发:

我为生产制作了另一个文件,并覆盖了一些设置,包括省略的stdin_open和tty(docker-compose-prod.yml)

使用docker compose重建图像后

docker-compose-f docker-compose-prod.yml构建——无需更改
和他们一起跑

docker compose-f docker-compose-prod.yml up-d
我仍然可以用docker exec输入这个容器的伪tty

我已尝试在下一次尝试(docker-compose-prod.yml)时显式禁用stdin

重建它并以相同的结果运行

然后我假设我的docker-compose.yml文件以某种方式被合并为构建/运行设置,所以我将其重命名为docker-compose-default.yml

但遗憾的是,我仍然注意到,我的容器在产品中使用打开的stdin运行。 docker compose up-d是否总是使用打开的stdin/tty运行(听起来很奇怪,但我觉得我快疯了)? 或者我错过了什么

docker exec -it my_prod_container bash
这不连接到容器的标准输入。它在容器内启动第二个bash进程。stdin与此无关,启用或禁用
stdin_open
tty
将无效。他们没有关系

与C类似的是关闭stdin并希望它能阻止
fork()
调用

这不连接到容器的标准输入。它在容器内启动第二个bash进程。stdin与此无关,启用或禁用
stdin_open
tty
将无效。他们没有关系


与C类似,关闭stdin并希望它能阻止
fork()
调用。

你说可以用docker exec输入伪tty是什么意思?你在用docker exec做什么?docker exec-它是我的产品容器,你说你可以用docker exec输入伪tty是什么意思?你在用docker exec做什么?docker exec-它是我的产品容器bashAha,我明白了,所以一开始就不需要打开stdin和分配tty(在开发中)?那么,你能告诉我这些选项的用例是什么吗?啊哈,我明白了,所以在开发中,没有必要首先打开stdin并分配tty吗?你能告诉我这些选项的用途是什么吗?
services:
  web:
    image: some_image
    container_name: my_service_prod
    environment:
....
services:
  web:
    image: some_image
    container_name: my_service_prod
    environment:
     .....
    stdin_open: false
    tty: false
docker exec -it my_prod_container bash