إعادة البناء تتجمد عند محاولة إيقاف الحاوية

تلقيت اليوم الرسالة الأولى أنت تشغل إصدارًا قديمًا من صورة Discourse. تم تعطيل الترقية عبر واجهة المستخدم الويب حتى تقوم بتشغيل أحدث صورة وأعتقد أنني تسببت في تعطل تثبيتتي.

اتبعت التعليمات، وقمت بتشغيل كل أمر بصلاحيات sudo لأن مزود الاستضافة الخاص بي لا يسمح بإنشاء مستخدمين جذريين (root).

cd /var/discourse
sudo git pull
sudo ./launcher rebuild app

ثم اضطررت إلى إعادة تشغيل الأمر sudo git stash قبل pull بسبب وجود خطأ يتعلق بالتعارضات.

بدى أن كل شيء تقدم بشكل جيد (تركت العملية لأكثر من ساعة) لكن بعد ذلك أغلق اتصال الـ Terminal الخاص بي (خطأ في أنبوب الاتصال broken pipe). للتغلب على ذلك، قمت بتعيين ClientAliveInterval على الخادم إلى 60 ثانية حيث كان معطلًا، ثم أعيد تشغيل الخادم وحاولت مرة أخرى.

الآن، عندما يتم تشغيل سكريبت إعادة البناء، ينهار عند محاولة إيقاف حاوية Docker.

حاولت تجاوز ذلك بتشغيل docker kill <id> قبل تشغيل سكريبت إعادة البناء، لكن نفس الانهيار يحدث (استهلاك المعالج بنسبة 100% لمدة حوالي 15 دقيقة… ثم لا شيء لساعات).

عند إعادة تشغيل الخادم، لا يزال الموقع يعمل، لكنني غير قادر على تحديثه (محدّث الواجهة الويب لا يزال يشير إلى أنني أستخدم إصدارًا قديمًا من صورة Discourse).

أي نصيحة ستكون محل تقدير كبير.

من الصعب التخمين دون رؤية ناتج البناء.

يمكنك تجربة استخدام tmux (أو ما يشابهه) لإبقاء الجلسة مفتوحة عند انقطاع الاتصال (يمكنك إعادة الاتصال بالجلسة عبر tmux attach).

ربما يُفيدك الاطلاع على تحديث PostgreSQL 13؟

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

شكرًا لك يا جاي، أعتقد أنني عثرت على المشكلة.

مزود خدمة VPS الخاص بي، webdock.io (والذي هو رائع في الواقع)، لا يدعم zfs لأنه يستخدمه على مستوى المضيف؛ وقد نصحوني بأن zfs المتداخل غير ممكن. كما لم يوصوا باستخدام overlay2 للتثبيت الخاص بي، واقتروا عليّ تعديل launcher لتشمل وحدة تخزين vfs، وهي غير موجودة افتراضيًا.

171‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎ Storage Driver: (vfs|aufs|zfs|overlay2)
‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‎‏‏‎‎‏‏‎ ‎‏‏‎ ‏‏‎‎‏⬆️

أشتبه في أن أمر sudo git pull قد قام بكتابة هذا فوق، ثم حاولت إعادة البناء باستخدام وحدة تخزين خاطئة؟

لقد قمت للتو بإعادة كل شيء إلى حالته السابقة، ثم عدلت launcher مرة أخرى قبل تشغيل rebuild app، والآن يعمل كل شيء بشكل صحيح.

cd /var/discourse
sudo git stash
sudo git pull
sudo nano launcher 

‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ‎‏‏‎ ثم قم بتعديل السطر 171 لتشمل vfs

sudo ./launcher rebuild app

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

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

يوصي Webdock (الآن) باستخدام fuse-overlayfs كمحرك تخزين Docker لاستخدامه: How to change the Docker storage driver – Webdock

السبب هو أن vfs ينتج استخدامًا عاليًا لمساحة القرص.

ولكن استخدام fuse-overlayfs لـ Docker سينتج تحذيرًا أو خطأ من جانب مشغل Discourse، لأنه ليس محركًا موصى به.

لدي تعليمات مفصلة حول كيفية حل هذا في هذا المنشور على مدونتي: Deploying Discourse on a Webdock server

يمكنك أيضًا القيام بذلك بالطريقة التي قمت بها عن طريق إضافة المحرك المثبت إلى عبارة egrep.

ولماذا تقول إن Webdock لا يسمح بإنشاء مستخدمين جذر؟
يمكنك ببساطة التبديل إلى الجذر باستخدام sudo su وتنفيذ الأوامر من دليل تثبيت Discourse بعد ذلك.