Running Discourse on Docker for Mac

Here’s the PR :wink:

I know; I too have spent too much time debugging docker-sync than I care to admit. This new approach, albeit not as fast, requires zero additional effort to setup and is quite stable from my own experiences!

我最终在 Mac 上安装了 Discourse……但它慢得要命……就像每页加载需要超长的时间(20 秒)。
所以我的问题是:

  1. 这是 Docker 的问题还是 Discourse 代码的问题?

有人遇到同样的问题吗?

这是 Docker for Mac 的问题。在 Mac 上原生安装 Discourse 进行开发将大幅提升性能。

也许 Discourse 根本不应该使用 Docker?我看不出有什么优势。说真的,这只是一层额外的抽象,调试容器会变得很麻烦。只是提一下。

Docker 标准化了运行应用的环境,并将其与主机隔离。

如果 Discourse 团队要在没有 Docker 的情况下支持自托管安装,那将是一场噩梦,因为主机环境和配置在不同 Discourse 实例之间会差异巨大——尤其是在 Mac 和 Linux 之间。

Docker 在 Linux 上会带来轻微的性能损失(在 Mac 上确实更大),但对于像 Discourse 这样拥有分布式开发团队和成千上万个自托管实例的开源项目来说,其优势是巨大的。

如果你希望以某种商业规模运行应用(例如使用 Kubernetes 进行集群编排),你就需要将应用容器化,以便将所有实现细节从编排器中抽象出来。

我的开发环境(尽管是 Ubuntu)不使用 Docker。实际上,按我的方式操作可能更费事,因为从头重建很麻烦。

@cmoi,我也回你一句:

我刚在我的 Mac 上为开发环境搭建了一套新配置(详见上面的第 44 号帖子),运行速度非常快,没有任何问题。

关于你的另一个问题:

@cmoi 说……
也许 Discourse 根本不应该使用 Docker?我看不出有什么好处。说真的,这只是一个额外的层级,调试容器会变得非常痛苦。我只是说说。

我们在生产和预发布环境中都使用 Docker 运行 Discourse,效果非常好。其中一个原因是,在 Docker 中部署所需的时间和精力只是“直接部署到物理机”的一小部分。此外,如果服务器崩溃,在 Docker 环境中恢复也更容易。

因此,毫无疑问,在生产环境中使用 Docker 运行有许多理由。

不过,对于插件开发,我最终切换到了一套不使用 Docker 的“裸机”配置。我明显感觉到,加载和重载插件、调试以及其他相关操作,在 Docker 之外进行会更快、更有趣,这一点毫无疑问。