当前位置: 首页 > 知识库问答 >
问题:

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

谭翰海
2023-03-14

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

我有stdin和tty开放开发在我的撰写文件(docker-compose.yml):

services:
  web:
    image: some_image
    container_name: my_service_dev
    environment:
     .....
    stdin_open: true
    tty: true

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

services:
  web:
    image: some_image
    container_name: my_service_prod
    environment:
....

在使用docker comment重建图像后

docker-compose -f docker-compose-prod.yml build --no-chache

和他们一起跑

docker-compose -f docker-compose-prod.yml up -d

我仍然可以用docker exec输入这个容器的伪tty。

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

services:
  web:
    image: some_image
    container_name: my_service_prod
    environment:
     .....
    stdin_open: false
    tty: false

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

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

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

共有1个答案

贺博厚
2023-03-14
docker exec -it my_prod_container bash

这没有连接到容器的标准输入。stdin与此无关,启用或禁用stdin_opentty将没有效果。他们是不相关的。

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

 类似资料:
  • 3.4 TTY模式中的命令 cgdbmodekey 返回代码窗口。这个按键默认为 ESC 键 page up 向上翻一页 page down 向下翻一页 F11 移动到GDB输出的头部 F12 移动到GDB输出的尾部

  • 问题内容: 我对Javascript开发还很陌生,所以这可能是一个真正的新手问题。 我有一个sencha-touch应用程序充斥着调试目的。 我有(file:///C:/questions/tagged/chirpy”显示标记为“chirpy”的问题”)做了我所有的编译时间相结合。它输出用于调试以及用于生产的 现在,我可以浏览所有代码文件,并在准备投入生产时手动将其删除,但是我想知道是否有一种方法

  • 问题内容: 我正在尝试使用ssh连接到一台计算机,然后使用ssh连接到另一台计算机。但是得到这个错误: 问题答案: 登录到外壳程序时,远程主机假定连接是由人类用户完成的。因此,可以合理地期望他们可以控制客户端上的 标准 。也就是说,用户正在通过键盘在终端上进行输入。如果远程主机检测到用户不是人类用户(因为输入的不是终端- tty,而是另一个进程),它可能会警告用户有关此意外情况。 讨论过的不当行为

  • 我在运行Windows10的笔记本电脑上安装了Jenkins。但是,当我试图运行以下操作时,我将运行SQL Server的Linux容器旋转: 我得到: 当我从powershell会话运行命令时,它完成时没有任何问题。拖网这个站点得到的答案表明,这可能与Linux容器中使用的需要执行sudo的任何帐户有关,并且我应该修改文件,问题是我没有文件,根据这是容器所基于的Linux版本(并不是它的基础是L

  • 问题内容: 我有一个带有默认变量值的application.properties文件。我希望能够在运行时更改其中之一。我找到了如何更改整个文件的方法,但是我只想更改其中一个或两个属性。 问题答案: 您可以将各个属性作为命令行参数传递。例如,如果要设置,则在启动可执行jar时可以执行以下操作: 另外,如果您使用的是Spring Boot 2.x,则: 或者,如果您使用的是Spring Boot 1.

  • 问题内容: 我目前有量角器安装程序,可以在我们的集成服务器上运行。在protractor.conf.js文件中,我具有以下内容: 从命令行本地运行时,我想覆盖此设置。我尝试了以下失败的尝试 问题: 从命令行本地运行时,如何切换为仅使用chrome的单个实例? 问题答案: 这是个问题。 根据源代码,命令行参数是的别名。 根据文档: 换句话说,由于已指定,因此将被忽略。 您可以尝试从命令行重置: 作为