فشل التحديث: إصدار Docker غير مدعوم

حسنًا، إليك كيف تمكنا من إصلاحه (ليس لمن هم ضعفاء القلوب)

  1. ترقية Ubuntu إلى إصدار يدعم Docker 20+
    كنا نستخدم Ubuntu 16 وكان عليّ الترقية إلى Ubuntu 20 على الأقل، لذلك قمنا بهذه الترقية مرتين
RELEASE_UPGRADER_ALLOW_THIRD_PARTY=1 do-release-upgrade
  1. بمجرد وصولنا إلى Ubuntu 20، كان علينا تحديث Docker الذي رفض Ubuntu القيام به من تلقاء نفسه.
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# إضافة المستودع إلى مصادر Apt:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release & echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
  1. هذا أوصلنا إلى Docker 28
  2. ثم قم بتشغيل
./launcher rebuild app
  1. سيؤدي هذا إلى ترقية PostgreSQL الخاص بك من 13 إلى 15، انظر:
    PostgreSQL 15 update
  2. بمجرد ترقية قاعدة البيانات بنجاح، قمت بتشغيل
./launcher rebuild app
  1. أدى هذا إلى ظهور خطأ بشأن عمود مفقود
2025-05-18 14:58:28.208 UTC [1455] discourse@discourse ERROR:  column "require_message" does not exist at character 72
2025-05-18 14:58:28.208 UTC [1455] discourse@discourse STATEMENT:  SELECT id, name, name_key, description, notify_type, auto_action_type, require_message, applies_to, position, enabled, score_type FROM "flags" ORDER BY "flags"."position" ASC
** PLUGIN FAILURE **

You are unable to start Discourse due to this error during plugin
initialization:

PG::UndefinedColumn: ERROR:  column "require_message" does not exist
LINE 1: ..._key, description, notify_type, auto_action_type, require_me...
                                                             ^
  1. في هذه المرحلة، لا توجد طريقة لبدء تشغيل الحاوية، لذا ذهبت إلى app.yml وقمت بتعطيل جميع الإضافات ثم قمت بإعادة البناء مرة أخرى
  2. تم إعادة بناء التطبيق أخيرًا، ثم تمكنت من الدخول إلى وحدة تحكم Rails لإضافة العمود المذكور أعلاه يدويًا.
./launcher enter app
rails db
ActiveRecord::Base.connection.execute("ALTER TABLE flags ADD COLUMN require_message BOOLEAN DEFAULT FALSE;")
exit
exit
  1. بمجرد وجود العمود، عدت إلى app.yml وقمت بتمكين جميع الإضافات وقمت بإعادة البناء مرة أخرى
  2. نجحت إعادة البناء … ونحن الآن جاهزون!

شكرًا لك @pfaffman على استجابتك السريعة في عطلة نهاية الأسبوع. سنقوم بإنشاء قطرة جديدة محدثة والانتقال إليها. كان من المفترض أن تكون هذه ترقية سريعة في مكانها من واجهة الويب. ولكن يبدو أن البرنامج النصي لا يختبر توافق Docker. عندما قام بترقية Docker الخاص بـ Discourse، ألقى خطأ Docker غير المتوافق.

كان هذا خطأنا بالكامل لقولنا إننا نستخدم إصدارًا قديمًا جدًا من Ubuntu 16، أحد الأشياء الجيدة والسيئة في نظام مستقر هو أنه يميل إلى البقاء.

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