用代码重建论坛吗?

我有一些突然冒出来的零散想法,其中一个就是一个安装插件的插件。这需要重建论坛。有没有办法使用 Ruby 进行重建?我真的不想尝试:

p `cd ../../`
p `. /launcher rebuild app`
3 个赞

在标准安装中,Discourse(以及插件)运行在 Docker 容器内。该容器无法完全访问主机文件系统,因此无法访问主机的 /var/discourse 目录来修改 app.yml 或运行 launcher

即使它可以访问……这里存在一些循环依赖。运行 ./launcher rebuild 会杀死 Docker 容器……这会杀死你从插件启动的 launcher rebuild :boom:

这里有潜在的解决方案。例如,添加额外的 Docker 卷挂载,以便从容器内部访问配置/启动器。但这并非易事。

我记得有人曾经制作过一个“插件管理器”插件……它需要对 app.yml 进行一些调整,以添加卷挂载等内容。但我现在找不到任何关于它的主题,所以我假设它不再维护了。也许有人能分享一个链接(或者这只是一个梦 :sweat_smile:)?

在 CDCK 方面,我们肯定倾向于使用主题,当我们希望客户能够随意安装/更新/卸载时。允许人们任意安装插件是不可行的,因为这会影响在同一服务器上运行的其他客户。

5 个赞

是的,在这里:

5 个赞

嗯……我明白了。

哦,糟糕,我没想到这一点!

1 个赞

Dashboard.literatecomputing.com 将通过编辑 app.yml(或 web_only.yml)并执行重建(实际上是引导、销毁、重建)来安装和删除插件。在双容器安装中,停机时间最少。

它还执行升级 docker 和 postgres、docker 清理等操作。由于它全部管理标准安装,因此您不会被它绑定,除非它实际执行某些操作(例如安装不良插件),否则它不会破坏任何东西。

它是一个(私有的)discourse 插件,驱动一个 ansible playbook。您可以加入免费试用组并免费使用它(提供有限支持)。

4 个赞

这个插件似乎只是将仓库克隆到 /plugins 目录。挺有趣的。

ProCourse Installer 很棒!只是它给一些插件带来了问题,真遗憾。

3 个赞

你可以在容器内做类似的事情来为现有容器添加插件:

cd /var/www/discourse/plugins
git clone my-plugin-url
rake db:migrate assets:precompile
sv restart unicorn

但是,在容器中保留插件以及在下次重建时保留 app.yml 中的插件存在问题。

我曾多次遇到过 ./launcher destroy app;./launcher start app 的情况,以应用 app.yml 中的新环境变量,结果却发现“新”容器的版本落后于数据库的版本。如果有人只升级了容器中的某些插件,而这些插件与旧容器中的 Discourse 版本兼容,但与重建后获得的版本不兼容,那情况就更糟了。

3 个赞

原来ProCouese插件只是克隆了存储库,并且只能通过该插件页面使用rm -rf删除克隆的插件文件夹。

1 个赞

它实际上作为一个概念验证,效果相当不错。虽然可以进行一些调整,因为它被认为会使故障排除更加困难。所以也许需要一些关于如何访问 procouree 安装程序的命令行信息。也许更好的日志文件。

优点是,您可以通过删除/注释掉 pro course installer 来禁用所有插件。虽然它现在坏了。

Joe 有一些非常有前瞻性的想法。我记得他制作了最初的帖子投票插件?