Postgres.template.yml とマルチコンテナ構成

マルチコンテナモードに移行した際、DBのリストアが予期せぬサイトのダウンタイム(バックアップがDBに読み込まれている間)を引き起こすことに気づきました。

そこで、postgres.template.yml を調べてみたところ、app.yml およびスタンドアロンコンテナ standalone の共有スペースへのパスが、このテンプレートにハードコードされていることがわかりました。

これらのファイルの専門家ではありません(まだですが)、コードは主に情報提供を目的とした「echo」文であるため、内容はユーザーへの「情報提供」として機能しており、致命的な問題を引き起こすものではないように見えます。

テンプレートの例
echo Run: "./launcher stop app"
           echo Run: "sudo mv /var/discourse/shared/standalone/postgres_data /var/discourse/shared/standalone/postgres_data_old"
           echo Run: "./launcher rebuild app"
           echo
           echo Run: "./launcher enter app"
           echo Run: "cd /shared/postgres_backup"
           echo Run: "sv stop unicorn"
           echo Run: "sudo -iu postgres dropdb discourse"
           echo Run: "sudo -iu postgres createdb discourse"
           echo Run: "sudo -iu postgres psql discourse < backup.db"
           echo Run: "exit"
           echo Run: "./launcher rebuild app"
           exit 1
          if [ "$PG_MAJOR_OLD" = "9.5" ]; then
             echo 'In containers/app.yml: Change "templates/postgres.template.yml" TO "templates/postgres.9.5.template.yml"'
             echo
           fi

などなど。

すべてが「情報提供であり、致命的な問題ではない」と思われます。

おそらく重要ではないかもしれませんが、サイトのさまざまなチュートリアルでこのテンプレートや、データコンテナを「data」、Webコンテナを「web-only」にリネームする手順が言及されているため、触れておく価値があると考えました。

参考情報として、将来的に検討していただければ幸いです。