专注分享
有价值的知识

【转载】浅谈我对discourse的理解

discourse实在是太复杂了,人家那么多年的心血让我一个菜鸡两三天看完也不现实,总之在研究discourse的时候我发现了一些很有意思的设计:

首先谈谈的discourse底层,它官方推荐且唯一推荐的运行方式是跑在一个docker上,瞠目结舌了多多少少属于是,但只要你被草习惯了,你就会发现discourse这套东西还蛮有意思的,它实际上是这样的;
论坛核心数据实际上是在/var/discourse/shared这个路径,对,核心数据是完全暴露在docker外,实际存储在服务器上的,docker只是做了一个软link让docker里面可以访问外部的资源,这么做的好处是你至少觉得放外面出事了抢救的概率比里面高一点。。。整个docker炸了也没啥关系(

底层是数据,那么上一层就是docker的image了。
discourse有一个launcher的bash,经常你在containers/app.yml改动了啥就需要rebuild,所谓rebuild,实际上就是执行一次重新生成镜像,rebuild时我看它里面大概做了这么几件事:

  1. 把discourse对应的版本(默认为main,即最不稳定的版本)从github上pull下来
  2. 把你自己自定义的plugin也从对应的github上pull下来
  3. 压缩(brolti)js/css
  4. 把数据库开起来

总之image就是新的一个运行环境了。

最上面则是containers,也就是docker的参数传递,这时候它会把你app.yml规定好的参数穿进去docker,比如volume路径,SMTP服务器参数之类的。。。(这个真的太阴间了,SMTP服务器每次变好像都要rebuild一次,不能很方便地在管理页面更改)

总结一下就是,最底下是放在外面的数据(sql/用户上传文件什么的),中间是运行环境(Nginx,Ruby,SQL服务器之类的),最上层是参数(SMTP服务器)

理解了它们怎么运作,才能更好地维护和魔改discourse。

赞(14) 打赏
未经允许不得转载:可汗博客 » 【转载】浅谈我对discourse的理解

评论 抢沙发

更好的WordPress主题

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册