注意到当我们切换到多容器模式时,恢复数据库会导致意外的站点停机(在备份加载到数据库期间):
因此,我在 postgres.template.yml 中进行了调查,发现 app.yml 以及独立容器 standalone 的共享路径被硬编码到了该模板中。
我绝非这些文件的专家(目前还不是),而且由于代码中大部分是信息性的“echo”语句,内容看起来更像是“对用户的信息提示”而非破坏性操作:
模板示例
echo 运行:"./launcher stop app"
echo 运行:"sudo mv /var/discourse/shared/standalone/postgres_data /var/discourse/shared/standalone/postgres_data_old"
echo 运行:"./launcher rebuild app"
echo
echo 运行:"./launcher enter app"
echo 运行:"cd /shared/postgres_backup"
echo 运行:"sv stop unicorn"
echo 运行:"sudo -iu postgres dropdb discourse"
echo 运行:"sudo -iu postgres createdb discourse"
echo 运行:"sudo -iu postgres psql discourse < backup.db"
echo 运行:"exit"
echo 运行:"./launcher rebuild app"
exit 1
if [ "$PG_MAJOR_OLD" = "9.5" ]; then
echo '在 containers/app.yml 中:将 "templates/postgres.template.yml" 更改为 "templates/postgres.9.5.template.yml"'
echo
fi
等等。
基本上看起来都“只是信息提示,不会造成破坏”,我这么认为。
这可能并不重要,但由于网站上的各种教程提到了此模板,以及将数据容器重命名为“data”、将 Web 容器重命名为“web-only”等,我认为值得提一下。
仅供参考,或许可以在未来某个时候再仔细看看……