主题自动化

大家好,我是新来的 :slight_smile:
我正在 Kubernetes 集群上运行一个 Docker 化的 bitnami Discourse(最新版本),这似乎是一个很棒的项目。但是,我在尝试自动化主题安装时遇到了一些问题。本质上,我需要从 CI/CD 中构建、部署、运行和配置这个 Docker 镜像,以便在第一次登录时一切都已准备就绪。关于配置方面,还有自定义主题的安装。据我从多个论坛和文档中了解到的,没有原生的方法可以以编程方式安装它,我只找到了一个点击指南(如果我错了,请纠正我)。

我的第一个想法是通过 k8s “手动”将主题文件添加到 Discourse 的文件系统中,但正如我所见,Discourse 以一种奇怪的方式管理其文件,根据其内部逻辑重命名它们,使其无法预测。

更详细地查看,我发现了这个很棒的命令行工具 discourse_theme,这里的问题是我仍然需要先从 Discourse 生成一个 API 密钥,否则它将无法工作(再说一遍……如果我错了,请纠正我)。
所以最后我有几个问题:
首先,是否有我错过的、用于以编程方式安装 Discourse 主题的不同/原生方法?
另一方面,是否有办法从脚本中获取 Discourse 的 API 密钥?
最后,有人知道可以解决此类问题的 Kubernetes 技巧吗?

提前表示感谢
此致

使用我们的官方安装方法即可支持:Install a Theme programatically

1 个赞

我认为唯一的解决方案是构建一个包含所需插件的镜像,将其推送到 Docker 仓库,并使用适当的环境变量启动它,然后在某个时候,在镜像首次运行时(至少),看到数据库已迁移并且资源已预编译并推送到 S3。您可能希望在旧镜像运行时将 SKIP_POST_DEPLOYMENT_MIGRATIONS 设置为 true 进行一次迁移,然后在新镜像启动且旧镜像已关闭后,将 SKIP_POST_DEPLOYMENT_MIGRATIONS 设置为 false 再进行一次迁移,或者运行 db:ensure_post_migrations rake 任务。

您可以在运行的镜像中运行一个 rake 任务,类似:

         rake api_key:create_master['描述密钥']

上面的内容可能足以让您更进一步。我过去曾在 GCP 和 AWS 上为客户运行过 Kubernetes 实例。我对其工作方式从未感到 100% 满意(从客户的角度来看,它工作得很完美,只是从我的角度来看,它不太优雅,但也没有那么不优雅以至于我 bother 去修复它!)。我在这里没有更多可以提供的了,但如果您需要更多帮助,请随时直接与我联系。

1 个赞