你好!
我需要在某个环境中部署 Discourse,该环境要求有多个独立的论坛,且论坛集合需要能够随时间灵活调整。(是的,我确实需要多个论坛;它们服务于不同的社区。)
答案似乎是采用多站点(multi-site)安装方案,我已经成功实现了这一点:目前我拥有一套基于 Docker 的多站点工作配置,各站点的数据容器和 Web 容器相互独立,具体可参考 https://meta.discourse.org/t/multisite-configuration-with-docker/14084。(我使用了两个主机名 $hostname.$domain 和 discourse.$domain,在测试中运行良好。)
然而,存在一个限制:我无法轻松控制 DNS,因此难以添加多个“真实”的主机名。目前看到的所有文档都表明多站点部署需要多个主机名,快速查阅多站点支持的实现机制也证实了这一点。
我理想的布局是让每个论坛位于独立的子目录中,例如 discourse.$domain/forum1, …, discourse.$domain/forumN;同样理想的是,能够像现有的多站点机制那样,仅通过一个 Web 容器来服务所有这些论坛。
从实际测试来看,我可以成功将“主”论坛移至子目录(例如 discourse.$domain/forum),参考 Serve Discourse from a subfolder (path prefix) instead of a subdomain —— 但这似乎将 Web 容器绑定到了该特定子目录,并且在我的实验中严重干扰了多站点功能。
我还尝试过一些技巧,例如根据主机前端 Web 服务器的路径,在传入 Web 容器的 Host: 请求头中进行调整,但均未成功——结果得到了多个论坛的奇怪混合状态。
因此:是否有简洁的方法实现这一目标?我能否像多站点那样仅使用一个 Web 容器?还是必须使用第二个 Web 容器?如果两个容器都指向同一个数据容器且彼此不知情,它们是否会表现异常?或者我是否完全走错了方向?