ترقية PostgreSQL 18 تركت Discourse يستخدم ثنائيات PostgreSQL 15

أقوم بتشغيل Discourse في حاوية Docker مستقلة على المسار /var/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. ما هو الطريقة الصحيحة لإعادة بناء أو تحديث حاوية Discourse بحيث تحتوي فعليًا على ثنائيات PostgreSQL 18؟

  2. هل هناك قالب أو وسم صورة (image tag) معين يجب استخدامه في app.yml؟

  3. بمجرد توفر PostgreSQL 18، ما هي الإجراء المدعوم لبدء تشغيله مقابل مجلد /shared/postgres_data الموجود مسبقًا؟

لم أحذف أو أعيد تهيئة مجلد بيانات PostgreSQL 18. أفضّل استعادة العنقود المُحدَّث بدلاً من استعادة بيانات PostgreSQL 15 القديمة.

إعجاب واحد (1)

تم دمج منشور في موضوع موجود مسبقًا: تحديث PostgreSQL 18 لمستضيفي أنفسهم