لقد كنت أستخدم Discourse لعدة سنوات الآن. أقوم بإعداد نسخة جديدة كل 6 أشهر. يتضمن الإعداد الخاص بي Docker ووكيلًا يعتمد على Nginx، لذلك ربما يكون غير قياسي قليلاً. أنا لا أستخدم discourse-setup لهذا السبب.
كل 6 أشهر، عندما أكرر هذه العملية، بعد أن أقوم باستنساخ نسخة جديدة من Discourse من git الخاص بها وتشغيل ./launcher bootstrap app، يفشل الحاوية في البدء. يظهر السجل:
anacron: Can't chdir to /var/spool/anacron: No such file or directory
run-parts: /etc/runit/1.d/anacron exited with return code 1
run-parts: executing /etc/runit/1.d/00-ensure-links
run-parts: executing /etc/runit/1.d/00-fix-var-logs
run-parts: executing /etc/runit/1.d/01-cleanup-web-pids
run-parts: executing /etc/runit/1.d/anacron
anacron: Can't chdir to /var/spool/anacron: No such file or directory
إلى ما لا نهاية.
عادةً ما أقوم بعد ذلك بالعديد من الخطوات لإعادة البناء، وإعادة التشغيل، وإزالة المكونات الإضافية، وإعادة إضافتها، وما إلى ذلك، حتى تعمل أخيرًا، دون أن أعرف أبدًا ما الذي جعلها تعمل في النهاية. بعد 6 أشهر، يحدث نفس الشيء مرة أخرى. أعمل فقط لإصلاحه، وليس من الواضح أي من الخطوات العديدة التي أتخذها في ذلك الوقت جعلتها تعمل في النهاية.
هذه المرة، أعتقد أنني وجدت المشكلة أخيرًا، وهي هذه: يبدو أن ./launcher start app يعيد تشغيل مثيلات الحاويات القديمة المسماة app، حتى عندما تم استنساخ Discourse وإعادة بنائه.
الخطوة المفقودة هي docker remove app. باختصار:
./launcher stop app
docker remove app
... الآن استنساخ، إعادة بناء، وتشغيل ./launcher start app يعمل
كان خطئي هو توقع أنه بعد تشغيل ./launcher bootstrap app، فإن ./launcher start app التالي سيبدأ صورة الحاوية الجديدة، ولكن هذا لا يبدو أنه الحال. بطبيعة الحال، تسوء الأمور مع الحاوية القديمة نظرًا لإعادة تهيئة المسار /var/discourse/shared.
أترك هذا هنا في حال بحث الآخرين عن نفس رسائل خطأ السجل.
كتحسين محتمل، سيكون من الجيد لو اكتشفت الحاوية أن دليل /var/discourse/shared الخاص بها قد تغير.