这是来自 ask.discourse.org 的答案。请报告其有用性。
1. 为 Discourse Docker 设置持久化的 CPU 和 RAM 限制
当通过 官方 GitHub 指南 在 VPS 上安装 Discourse 时,默认情况下不包含 --memory 和 --cpus 等资源限制。虽然您可以手动将这些标志添加到 Docker 运行命令中,但直接通过 docker stop 和新的 docker run 所做的任何更改在运行 ./launcher rebuild app 后都将丢失。Launcher 脚本始终会重新创建容器。
推荐方法:
a) 修改 Launcher 脚本
要持久强制执行资源限制,您必须修改 Discourse 用于启动 Docker 容器的 launcher 脚本。例如,在第 289 行附近,进行如下修改:
$docker_path run $restart_policy "${env[@]}" -h "`hostname`-$config" \
-m="4g" --cpus="2.0" -e DOCKER_HOST_IP=$docker_ip ...
这样可以确保每次 ./launcher rebuild 都会使用您的限制来创建容器。
来源和更多信息:
b) 直接编辑 Docker 命令
虽然通过复制重建的 docker run 命令来运行具有自定义限制的 Docker 在技术上是可行的,但这并不能持久,并且不推荐。
目前还没有官方的、持久的“内置”方法来为 Discourse 的标准部署工具传递 Docker 的 --memory 或 --cpus 参数,除非修改 launcher。
2. 容器名称
默认情况下,Discourse 的 launcher 将容器命名为 app。您可以通过 docker ps 进行确认。更改容器名称也需要直接修改 launcher 或模板。
阅读更多:Discourse 在 Docker 容器中
有用链接
如果您正在寻找一种更优雅且持久的方法(例如模板或受支持的 launcher 功能),请查看此相关讨论:
资源受限 VPS 的开关?
< /details>