如何在 Docker 中运行输出以使用 pups

很长一段时间里,我其实不太理解 pups 是什么,说实话我现在还是有点困惑。:grinning_face_with_smiling_eyes: :sweat_smile:

我理解 Discourse 的 Docker 镜像需要进行配置。与通过 Bash 脚本进行配置不同,这是通过 YAML 文件(这些文件会生成 Bash 脚本)来完成的,这些文件可以在这里找到:https://github.com/discourse/discourse_docker/tree/master/samples

Docker 容器的启动以及通过 pups 进行的配置,在下面的启动脚本中是交织在一起的:

我链接到的这一行对我来说特别重要。它似乎让 pups 在 Docker 容器中运行。我尝试通过 pups 运行一个 test.yml,显然它并没有在 Docker 容器中运行。它只是生成了一个 Bash 脚本(Bash 命令?),并立即执行了它。

我的问题是:如何让 pups 在开发 Docker 容器中运行?我指出的这一行非常长,其中一些部分对于我的用例来说似乎是不必要的。也许有人能给出一个简单的例子,说明如何将 pups 的输出与 Docker 容器结合起来。

我基本上想要添加一个类似于启动脚本中的 pups 命令。在 boot_dev 脚本 的末尾(或者在 boot dev 脚本之后作为一个单独的脚本运行)。

背景信息:

这样做的理由 → 我想添加一个长时间运行的进程到 runit。@merefield 指点我参考他的 Frotz 插件,了解如何实现这一点:

问题是:如何在本地进行此操作以测试 pups 输入?据我了解,Docker 开发实例并不是通过 YAML 文件和 pups 进行配置的。Frotz 插件的 pups 输入关注的是安装插件时的服务器 YAML 文件,所以我基本上对如何在本地执行此操作感到困惑。
好吧,谢谢 :sweat_smile:
编辑:
好的,我找到了这类行:

这意味着 pups 只需要在容器中运行。我不知道为什么我会认为它只是用来生成命令。我只是在 README 中看到了这句话:

pups 是一个小型库,允许你自动化创建 Unix 镜像的过程。

这对我来说没有太大意义,所以自然地,我的潜意识接管了。

--gen-docker-run-args 参数用于使 pups 的输出参数格式化为 docker run <arguments output>

不知何故,这导致我将 pups 概念化为将 YAML 文件转换为 Bash 命令输出的东西。就像一个 YAML 到 Bash 的编译器。但实际上,它更像是一个 YAML 解释器。它不仅创建命令,还立即执行它们。