从 docker-compose 中退出代码打破 while 循环

2024-01-18

我有一个案例:有一个 WordPress 项目,我应该在其中创建一个脚本来更新插件并将源代码更改提交到单独的分支。在这样做时我遇到了一个奇怪的问题。

输入变量:

    akimset,4.0.3
    all-in-one-wp-migration,6.71

我想做的是迭代这个变量的每一行

    while read -r line; do
      echo $line
    done <<< "$variable"

这段代码工作得很好,但是当我添加 docker-compose 逻辑时,一切都开始变得奇怪

    while read -r line; do
      docker-compose run backend echo $line
    done <<< "$variable"

现在只执行了一行,此脚本以 0 退出并停止迭代后。我找到了解决方法:

    echo $variable > file.tmp
    for line in $(cat file.tmp); do
      docker-compose run backend echo $line
    done

效果非常好,它会迭代每一行。现在我的问题是:为什么? ZSH 和 shell 脚本可能有点神秘,并且在像这样的边缘情况下运行对我来说并不是什么新鲜事,但我想知道为什么成功执行的脚本会破坏输入流。


这个的问题

while read -r line; do
  docker-compose run backend echo $line
done <<< "$variable"

是docker分配伪TTY。第一次执行 docker-compose run(第一个循环)后,它使用下一行作为输入来访问终端。

您必须将 -T 参数传递给“docker-compose run”命令,以避免 docker 分配伪 TTY。然后,一个工作代码是:

while read -r line; do
  docker-compose run -T backend echo $line
done < $(variable)

Update

上述解决方案适用于 docker 版本 18 和 docker-compose 版本 1.17。对于较新版本,参数 -T 不起作用,但您可以尝试:

  1. -d 而不是 -T 在后台模式下运行容器,但不,您不会在终端中看到标准输出。
  2. 如果您有 docker-compose v1.25.0,请在 docker-compose.yml 中将参数 stdin_open: false 添加到服务中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 docker-compose 中退出代码打破 while 循环 的相关文章

  • 导出使用 docker-compose 创建的容器

    我创建了一系列容器docker 撰写 其中一些容器按照定义在容器中的一些规则相互通信 docker compose yml file 我需要将这些容器从serverA to serverB 相同的操作系统 但我在理解它是如何工作的方面遇到了
  • /docker-entrypoint-initdb.d 文件夹中的脚本将被忽略

    我需要使用一些 SQL 命令配置 Postogres 但我放入 docker entrypoint initdb d 文件夹中的所有内容都不会被执行 我正在使用 postgres 9 6 图像 我的 Dockerfile 如下 FROM p
  • 如何在 Docker-Compose 中一起使用主机网络和任何其他用户定义的网络?

    我想将 Docker Compose 文件中定义的两个 Docker 容器相互连接 app and db 其中之一 app 也应该连接到host网络 容器应连接到通用的用户定义网络 appnet or default 使用嵌入式DNS来自
  • 命名 Docker 卷以共享构建而不更新

    我工作的公司的开发人员要求我用 Docker 做一些不同的事情 然后我也被使用了 目标是拥有 2 个具有以下职责的容器 容器A 节点容器将构建前端 React 应用程序并将捆绑包放入名为的目录中app dist 完成后 容器将停止运行 容器
  • docker asp.net core 容器在 mysql 容器之后启动

    我有一个带有 asp net core 的 docker 容器和一个带有 mysql 的容器 现在我需要等待 mysql 容器启动并准备好 两个容器都通过 docker compose yml 启动 就像是https github com
  • 如何从主机将主机名解析为 Docker 容器?

    我知道 Docker 在 127 0 0 11 上运行一个神奇的 dns 所以我想我会尝试 nslookup mycontainername 127 0 0 11 where mycontainername当然 是我尝试访问的容器的名称 然
  • bash while 循环线程

    我有一个 while 循环读取来自 a 的行 hosts while read line do ip line check done lt hosts 我的问题是我可以使用某种方法来加快速度 或者一次在 10 个主机上运行检查 每个检查都在
  • while(foo) 与 while(foo != NULL)

    有人可以解释一下如何while foo vs while foo NULL 是等价的 还 while foo vs while foo NULL 我知道 不是 但这就是我所知道的全部 假设foo是指针类型 while foo and whi
  • 在 Docker Compose 中更改 postgres 容器服务器端口

    我正在尝试使用 Docker compose 在远程服务器上部署第二个数据库容器 该 postgresql 服务器在端口 5433 上运行 而不是第一个 postgresql 容器使用的端口 5432 当我设置应用程序时 我收到以下错误输出
  • 如何正确链接 php-fpm 和 Nginx Docker 容器?

    我正在尝试链接 2 个单独的容器 nginx 最新 https registry hub docker com nginx php fpm https registry hub docker com php 问题是 php 脚本不起作用 也
  • 如何从 docker 容器运行 webpack 构建?

    我正在制作的应用程序是用 ES6 编写的 其他好东西是由 Docker 容器内的 webpack 转译的 目前 一切工作从创建内部目录 安装依赖项到创建编译的捆绑文件 当运行容器时 它说 dist bundle js 不存在 除非我在主机目
  • 将 Django OAuth2 提供程序与 JupyterHub 结合使用

    我正在尝试运行与 JupyterHub 服务器配对的 Django Web 应用程序 用户通过 Web 应用程序输入 然后在登录后获得对笔记本服务器的访问权限 为了促进这一点 我尝试使用OAuth2 其中 Django 提供身份验证 Jup
  • 让 Emacs ansiterm 和 Zsh 更好地发挥作用

    我一直在尝试在 emacs 会话中使用 Zsh 而无需 emacs 重新映射所有 Zsh 键 我发现 ansi term 对此非常有效 但是我仍然遇到一些问题 我输出了很多垃圾字符 我可以用以下方法修复它 Setup proper term
  • 如何对 Docker 容器中运行的 Spring Boot 应用程序进行健康检查?

    我正在 Docker 容器中运行 Spring Boot 应用程序 使用 Docker 文件启动容器中的应用程序 如何检查容器内 Spring Boot 应用程序的运行状况 如果容器停止或应用程序未运行 我需要根据运行状况检查自动重新启动容
  • Zsh 中的鱼式自我暗示?

    有没有办法做到鱼的自我暗示类型 http ridiculousfish com shell images autosuggestion png in Zsh https github com tarruda zsh autosuggesti
  • PHP 计数器在 while 循环中递增

    我在一个 while 循环中增加计数器时遇到问题 基本上我只想在数据库中获取的两个图像链接之间交替 但我的计数器不会增加 我不确定为什么有人可以提供帮助 while row stmt gt fetch PDO FETCH ASSOC img
  • Docker-compose:npm 安装成功后卷中不存在 node_modules

    我有一个具有以下服务的应用程序 web 在端口 5000 上保存并运行 python 3 Flask Web 服务器 使用 sqlite3 worker 有一个index js文件是队列的工作人员 Web 服务器通过端口使用 json AP
  • 使用 php 和 sendmail 发送有关测试 docker 容器的电子邮件

    我用的是ubuntu 16 04 我有一个 测试 docker docker compose 容器运行 php 5 6 和 apache 2 4 在生产平台 没有docker 上 邮件是通过sendmail发送的 如何在docker容器上发
  • Docker Compose 保持容器运行

    我想使用 docker compose 启动一个服务并保持容器运行 这样我就可以通过 docker检查 获取它的IP地址 然而 容器总是在启动后立即退出 我尝试将 command sleep 60 和其他内容添加到 docker compo
  • 如何通过 Apache Airflow 中的 Docker Operator 使用卷

    我正在开发一个 ETL 流程 使用 DockerOperator 通过 Apache Airflow 进行调度和编排 我正在使用 Windows 笔记本电脑 因此我只能从 Docker 容器内运行 Apache Airflow 我能够在我的

随机推荐

  • 如何自动更新使用 Inno Setup 安装的应用程序

    我有一个适用于 Windows 的可执行应用程序 setup exe 是我使用基于 Java 的 Launch4j Inno Setup 实现的 我经常频繁发布新版本和错误修复 我想知道是否有自动安装更新的机制 Inno Setup 没有任
  • 主机名的有效字符?

    主机名的有效字符是什么 这类似于联网计算机或网络域 具体来说 我正在编写一个连接到远程服务器的 PC 游戏 所以我有一个主机名字段和一个端口字段 显然 端口是短范围内的数字 但我需要知道所有可能的主机名字符是什么 以及可能需要的任何其他模式
  • DocumentDB REST API - 授权令牌错误

    Problem 每当我们请求列表或查询时 我们都会看到从 DocumentDB REST API 返回此错误 但当我们按名称 ID 获取对象时则不会 输入的授权令牌无法满足请求 请检查预期的有效负载是否按照协议构建 并检查正在使用的密钥 背
  • 使用 PLSQL 发送电子邮件

    我想使用 PL SQL 通过 gmail 或 yahoo 主机发送电子邮件 我在 google 中搜索并找到 SMT Mail 包 但它对我不起作用 请问有人可以指导我如何实现这一目标吗 CREATE OR REPLACE PROCEDUR
  • IE 10 和 11 使固定背景在使用鼠标滚轮滚动时跳跃

    当您在 Windows 8 中滚动鼠标滚轮时 固定的背景图像会疯狂地弹跳 这仅影响 IE 10 和 IE 11 这会影响以下元素position fixed以及 这是一个具有固定背景图像的示例 http www catcubed com t
  • Celery 任务优先级

    我想使用 Celery 管理任务 我想要一个任务队列 并发性为1 并且能够将任务推送到具有不同优先级的队列中 这样优先级较高的任务将抢占其他任务 我将三个任务添加到队列中 如下所示 添加任务 py from tasks import exa
  • 可变长度数组类型的 Sizeof 运算符

    根据参考参数 http en cppreference com w c language sizeof 如果类型为表达 is a 变长数组 type 表达被评估并计算其求值的数组的大小 在运行时 这意味着 如果类型表达是一个VLA类型 那么
  • jsp缓存标签库

    我想缓存 JSP 页面的某些部分 因为渲染起来很繁重 整个页面无法缓存 因为它包含用户特定的内容 但大部分页面可以 我认为最好的解决方案是创建一个 JSP 缓存标记 似乎有几种解决方案 但大多数项目都已死亡或被放弃 http www ope
  • 如何使用 FosRestBundle 公开函数结果?

    我正在使用 Symfony2 和 FosRestBundle 为我们的系统开发 REST API FosRestBundle 是一个非常好的工具 但它似乎有一个限制 只有属性 私有 受保护和公共 可以暴露给 API 我想公开一个基于其他两个
  • 在 Python 中将 UTF-8 转换为字符串文字

    我有一个 UTF 8 格式的字符串 但不太确定如何将此字符串转换为其相应的字符文字 例如我有字符串 我的字符串是 Entre xc3 xa9 示例一 这段代码 u Entre xc3 xa9 encode latin 1 decode ut
  • Tkinter 复选框/组合框下拉列表

    我正在尝试用 Python 创建一个后处理数据应用程序 并使用 Tkinter 为其设计 GUI 我不知道 Tkinter 是否支持由复选框组成的下拉列表 然后您可以从中选择多个框 下图反映了我试图描述的内容 这可能吗 这并不完全是您想要的
  • .NET 中的视频会议

    我正在向我们的一款软件添加聊天功能 我已经使用 WCF 启动并运行了聊天功能 我正在考虑尝试使用 WCF 再次添加视频聊天功能 基本上我将发送视频流 而不是发送客户端消息 我想知道是否有人用 WCF 做过这个 是否非常推荐使用 WCF 来执
  • 有没有办法在 Perl 中使用“常量”作为哈希键?

    有没有办法使用常量作为哈希键 例如 use constant X gt 1 my x X gt X 上面的代码将创建一个以 X 作为键而不是 1 作为键的哈希 然而 我想使用常量 X 的值作为键 use constant实际上制作了常量子程
  • Ruby Openid 连接库与客户端消费示例

    我正在寻找 ruby openid connect 客户端库以及使用它的直接代码示例 我找到了一个图书馆here https github com nov openid connect它的示例基于 Rails 但我对 Rails 不太熟悉
  • 为什么linux在内核代码持有自旋锁后禁用内核抢占?

    我是 Linux 新手 正在阅读 Rubini Corbet 撰写的 Linux 设备驱动程序书籍 我对与以下相关的一项声明感到困惑spinlocks 书中指出 如果非抢占式单处理器系统曾经进入 旋转一把锁 它会永远旋转 没有其他线程能够获
  • Java字符串搜索忽略重音符号

    我正在尝试为我的应用程序编写一个过滤函数 该函数将采用输入字符串并过滤掉以某种方式与给定输入不匹配的所有对象 最简单的方法是使用 String 的 contains 方法 即仅检查对象 对象中的 String 变量 是否包含过滤器中指定的字
  • 在 WHERE 子句中使用 mysql concat() ?

    我想搜索我的表 其中包含一列名字和一列姓氏 我目前接受一个字段中的搜索词 并将其与两列进行比较 一次一个 select from table where first name like search term or last name li
  • 有没有检查 CLS 合规性的工具?

    有没有一个工具可以分析我的 NET 代码 C 和VB NET http en wikipedia org wiki Visual Basic NET 然后告诉我why东西不符合 CLS Visual Studio 很高兴地告诉我一个参数不符
  • 如何只为 pandas 中数据帧的某些列绘制直方图

    这是我拥有的数据 在此输入图像描述 https i stack imgur com EwuSA png 假设我有一个名为 df 的变量中的数据框 如果我执行 df hist 它将为数据框中的每个类别显示一个直方图 但我只想为从类别 1 到类
  • 从 docker-compose 中退出代码打破 while 循环

    我有一个案例 有一个 WordPress 项目 我应该在其中创建一个脚本来更新插件并将源代码更改提交到单独的分支 在这样做时我遇到了一个奇怪的问题 输入变量 akimset 4 0 3 all in one wp migration 6 7