セルフホスティングユーザー向けPostgreSQL 18アップデート

私は /var/discourse に単一の Docker コンテナとして Discourse を実行しています。

組み込まれた PostgreSQL データベースをバージョン 15 から 18 へアップグレードしようとしたところ、アップグレードは完了したように見えますが、アクティブなデータディレクトリは現在以下のように報告しています:

/shared/postgres_data/PG_VERSION
18

しかし、再構築した Discourse コンテナには依然として PostgreSQL 15 のバイナリのみが含まれています:

/usr/lib/postgresql/15/bin/postgres
postgres (PostgreSQL) 15.18

PostgreSQL サービスは以下のように設定されています:

/usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main

一方、実際の Discourse データディレクトリは以下にマウントされています:

/shared/postgres_data

その結果、PostgreSQL は以下のエラーで失敗します:

FATAL: database files are incompatible with server

DETAIL: The data directory was initialized by PostgreSQL version 18,
which is not compatible with this version 15.18
(Debian 15.18-1.pgdg12+1).

最近の Discourse Docker イメージには PostgreSQL 18 のバイナリが含まれているはずだと理解しています。app.yml を変更して PostgreSQL 18 テンプレートを使用し、アプリを再構築しましたが、生成されたコンテナには依然として PostgreSQL 15 のバイナリが含まれており、サービススクリプトもまだ /etc/postgresql/15/main を指しています。

現在のサービス設定の関連部分は以下の通りです:

HOME=/var/lib/postgresql USER=postgres exec thpoff \
chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert \
/usr/lib/postgresql/15/bin/postmaster -D /etc/postgresql/15/main

私の質問は以下の通りです:

  1. PostgreSQL 18 のバイナリが実際に含まれるように、Discourse コンテナを再構築または更新する正しい方法は何か?

  2. app.yml で使用するべき特定のテンプレートやイメージタグはあるか?

  3. PostgreSQL 18 が利用可能になった後、既存の /shared/postgres_data ディレクトリに対して起動するためのサポートされている手順は何か?

PostgreSQL 18 のデータディレクトリを削除したり再初期化したりしていません。古い PostgreSQL 15 のデータを復元するのではなく、アップグレードされたクラスタを回復したいと考えています。

「いいね!」 1