ما زلت أبحث عن كيفية تثبيت Discourse لمجتمعي الداخلي. في الماضي، سألت عن كيفية تثبيت Discourse مع Redis خارجي و Postgres خارجي وكيفية إدارة كل شيء في مجموعة Kubernetes. يمكنك العثور على التفاصيل هنا
الآن لدي شك آخر لأنني أُخبرت أيضًا أنه يتعين علي إنشاء صورة حاوية خاصة بي لاستخدامها مع helm للنشر، وبسبب ذلك لن أتمكن من تنفيذ التثبيت باستخدام الوثائق الرسمية من خلال السكربتات المقدمة في دليل التثبيت السحابي.
حاولت بناء صورتي الخاصة باستخدام أمر bootstrap لكنني لا أستطيع تشغيل صورة docker بنفسي لأنها تبحث عن قوالب Ruby وتعيد خطأ.
هل من الممكن تشغيل صورة الحاوية دون استخدام السكربتات المقدمة؟ أعتقد أنني بحاجة إلى بعض المساعدة لأنني حاولت النظر إلى سكريبت bash لكنه يبدو متقدمًا بعض الشيء بالنسبة لي. كنت آمل أن يكون شخص آخر في موقف مشابه وربما يمكنه تقديم بعض النصائح.
للتوضيح وإضافة المزيد من التفاصيل:
استخدمتُ سكريبت التشغيل مع أمر bootstrap لإنشاء صورة خاصة بي تتضمن إعداداتي.
ثم تنص الوثائق على أنه يجب تشغيل السكريبت مع أمر run لإنشاء الحاوية من الصورة.
عند فحص كود السكريبت، وجدت أن أمر docker هو التالي:
لكنني غير قادر على تحويل جميع المتغيرات إلى أمر يمكنني تشغيله بمفردي دون استخدام السكريبت. أو ربما تكون المسار الذي أتبعه خاطئ من البداية، لكنني أردت التجربة قبل السؤال للتأكد من قدرتي على حل المشكلة دون إزعاج أي شخص.
عند محاولة تشغيل صورة docker بنفسي، تغلق الحاوية، وعند الاطلاع على السجلات أرى ما يلي:
Already up to date.
INFO -- : Loading --stdin
/pups/lib/pups/config.rb:23:in `initialize': undefined method `[]' for nil:NilClass (NoMethodError)
from /pups/lib/pups/cli.rb:27:in `new'
from /pups/lib/pups/cli.rb:27:in `run'
from /pups/bin/pups:8:in `<main>'
يعتمد Discourse على PostgreSQL يعمل في مساحة تخزين مشتركة؛ والعديد من الملفات المهمة الأخرى موجودة في هذه المساحة المشتركة (الصور، والملفات المرفوعة، والنسخ الاحتياطية، وسجلات الأحداث، وغيرها).
إذا حافظت على سلامة نظام الملفات في مجلد /shared وفقًا لمعايير تكوين Discourse، فيمكنك بدء وإيقاف صورة Docker الخاصة بـ Discourse وتطبيق الحاوية بسهولة؛ ومع ذلك، لا يمكنك بناء التطبيق (بحسب معرفتي) دون استخدام سكريبتات Discourse (ما لم تقم بعمل هندسة عكسية كاملة للسكريبتات وكتابة سكريبت خاص بك بناءً على السكريبتات الجيدة والموثقة والداعمة) لأن السكريبتات مسؤولة عن بناء تطبيق SPA معقد باستخدام EmberJS (تكنولوجيا جانب العميل) فوق Ruby on Rails (تكنولوجيا جانب الخادم)، ناهيك عن إدارة تكوين التطبيق الأساسي وجميع الإضافات. بصراحة، إنه تطبيق معقد للغاية.
نعم، يمكنك بدء حاوية Discourse أو إنشاء حاوية Discourse من صورة Discourse دون أي سكريبتات، إذا (وفقط إذا) كنت قد قمت بالفعل ببناء صورة Docker لـ Discourse ممتازة ومتوافقة مع معايير تكوين Discourse، بما في ذلك متطلبات التخزين الدائم لقاعدة البيانات والصور والملفات المرفوعة والنسخ الاحتياطية وملفات السجلات، وما إلى ذلك. هناك العديد من الملفات المهمة المطلوبة لـ Discourse في المساحة المشتركة؛ وبالتالي لا يمكنك ببساطة “أخذ صورة Docker عادية لـ Discourse” وتشغيلها دون جميع المتطلبات الأساسية المذكورة أعلاه (وليس كل ما ذُكر أعلاه تم ذكره!)
قد يكون الأمر محيرًا جدًا لأي شخص ليس (1) مطور Ruby on Rails ولا (2) مطور EmberJS.
ببساطة، أنت تبني تطبيق Ruby on Rails مُعبَّأ في حاوية (Docker) للاستخدام في بيئة الإنتاج (التقنية الخاصة بالجهة الخادمة) والذي يُشكّل الأساس لتطبيق صفحة واحدة (SPA) من فئة عالمية مبني بـ EmberJS (التطبيق الرئيسي للمستخدم)؛ وفوق كل ذلك، تحصل على نظام كامل لإدارة التكوين مفتوح المصدر لكل أكواد المصدر، يُدار بواسطة فريق موهوب وذي خبرة عالية من الخبراء التقنيين في مجال الويب، الذين يبرمجون في هذه البيئة منذ فترة طويلة. وعلاوة على ذلك، يمكنك أيضًا الحصول على استضافة احترافية وتطوير مخصص، وكل ذلك ضمن نظام أعمال Discourse.