أقوم بتشغيل 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
أسئلتي هي:
-
ما هو الطريقة الصحيحة لإعادة بناء أو تحديث حاوية Discourse بحيث تحتوي فعليًا على ثنائيات PostgreSQL 18؟
-
هل هناك قالب أو وسم صورة (image tag) معين يجب استخدامه في
app.yml؟ -
بمجرد توفر PostgreSQL 18، ما هي الإجراء المدعوم لبدء تشغيله مقابل مجلد
/shared/postgres_dataالموجود مسبقًا؟
لم أحذف أو أعيد تهيئة مجلد بيانات PostgreSQL 18. أفضّل استعادة العنقود المُحدَّث بدلاً من استعادة بيانات PostgreSQL 15 القديمة.