تحديث PostgreSQL 18 لمستخدمي الاستضافة الذاتية

أقوم بتشغيل 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)