如何收集 Discourse 使用的所有静态资源(js、css)

这是个很好的问题,但我没有很好的答案。

容器内部使用的配置系统是:

那里的 README 描述了钩子的一般工作原理。可用的具体钩子取决于您的实例如何设置——主要的 app.yml 会包含一个或多个模板。在大多数情况下,其中之一是 web.template.yml:

assets_precompile 钩子就在那里定义(在我输入时位于第 159 行)。根据 pups 文档,您可以使用 before_assets_precompile 和 after_assets_precompile 分别在该钩子完成之前或之后运行其他命令。

命令是在 Docker 容器内运行的,因此您无需为此做任何事情。

cd: 指令可以直接指向 /var/www/discourse/public/assets/,cmd 中的每一行都将从该目录运行。(警告:cmd 数组中的每一行都在单独的 shell 中运行,就像在 Makefile 中一样)。

我不确定 /var/www/discourse/public/assets/ 的内容是否会在构建之间保留,因此您可能每次都需要创建本地 Git 仓库并强制推送。更“正确”的解决方案可能是在 app.yml 中为资产目录定义一个 Docker 卷,该卷在 app.yml 中定义 与其他卷类似,并保留在容器外部。