هل يمكن لـ Discourse إرسال صور Docker متكررة لا تحتاج إلى التمهيد؟

كان ذلك ملاحظة حول سبب عدم استخدام عينة الإنشاء التي نشرتها للصورة العامة لـ PG.

هممم… ولكن ألن تقول إن هذا يجعل الطرق الأخرى أكثر تعقيدًا؟

فهمت! :slight_smile:

بصفتك خبيرًا في دوكر، يجب أن يكون كل هذا سهلاً للغاية بالنسبة لك؟

3 إعجابات

كما أحاول أن أشرح منذ يومين، مع الحل الحالي المقدم، يصبح الأمر صعبًا للغاية :wink:

باختصار؛
صورة Discourse بسيطة (شبيهة بصورة bitnami) مع مجموعة من متغيرات البيئة لتكوين الأشياء الأساسية (مثل الوصول إلى redis وقاعدة البيانات) ستكون أكثر من كافية ولكن لسبب ما هذا مستحيل تمامًا… :man_shrugging:

أنا أشارك إثباتات المفاهيم هنا للقيام بذلك بالضبط.

بالنسبة لمكون إضافي بسيط بالتأكيد، ولكن لا يمكننا افتراض أن المكون الإضافي سيبدو بطريقة معينة - تحتاج بعض المكونات الإضافية إلى إعداد إضافي، أو تثبيت إضافات إضافية، أو تبعيات إضافية للإضافات أو برامج خارجية تتطلب apt-get install. يجب أن يتم دمج ذلك في صورة مخصصة.

سيكون من الرائع رؤية هذا يتم، ولكنه ليس بالأمر البسيط.


بخصوص: تحديث الويب، لا يُتوقع من مشغلي Discourse معرفة سطر الأوامر أو دوكر على الإطلاق.

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

تحتاج فقط إلى بناء صورتك الخاصة باستخدام المشغل (الذي يمكنك الحصول عليه من خلال إجراءات GitHub للقيام بذلك)، ودفعها إلى مستودع، وتشغيلها باستخدام متغيرات البيئة. لا تزال بحاجة إلى ترحيل قاعدة البيانات، وتجميع الأصول مسبقًا، ودفعها إلى S3. يمكنك ترحيل قاعدة البيانات و skip_post_deployment_migrations حتى يتمكن الحاوية القديمة من الاستمرار في العمل حتى يتم تشغيل الحاوية الجديدة، ثم إيقاف تشغيلها وتشغيل بقية عمليات الترحيل. ولكن هذا معقد للغاية بالنسبة لشخص لا يعرف الكثير عن Discourse أكثر مما أعتقد أنك تريد معرفته. وهناك العديد من الأشياء التي يمكن أن تسوء، ولهذا السبب فإن الحل الحالي، وهو أمر فظيع لجميع الأسباب التي ذكرتها، هو أفضل حل لآلاف الأشخاص الذين لا يعرفون ما هو bash.

في الغالب، تحتاج فقط إلى ./launcher rebuild app، باستثناء مرة كل بضع سنوات عندما تحتاج إلى ترقية قاعدة البيانات، لذلك عليك القيام بذلك مرتين. لا يمكنك الحصول على هذا المستوى من البساطة مع docker-compose. هناك احتمال أنه إذا كان docker-compose قابلاً للاستخدام عندما بدأوا، فيمكنهم استخدامه بدلاً من الاضطرار إلى إنشاء الخاص بهم، ولكن هذا ليس ما حدث.

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

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

هممم… بالنسبة للغة/بيئة يفترض أن تكون عالمية ومستقلة عن المنصة، فإن الاعتماد على مدير حزم نظام التشغيل الأساسي يبدو غريبًا جدًا… :open_mouth:

هذا ما تمت الإشارة إليه سابقًا، وهو أن Discourse يبدو أنه راسخ بقوة في “الطريقة القديمة” لإدارة برامج PHP/المنتديات :slight_smile:

إذًا، لتلخيص المناقشة بأكملها (وربما وضعها في الرسالة الأولى لتجنب تكرارها بلا نهاية :slight_smile: ):

  1. تم تصميم Discourse والتركيز عليه لـ “العامة” والإعداد بأكمله موجه لتلبية احتياجاتهم
  2. نظرًا لكيفية أن Ruby (البيئة) غريبة نوعًا ما و (1) من المستحيل تقريبًا توفير صور Docker رسمية عامة بما فيه الكفاية في مستودع Discourse الرسمي

صحيح؟ :slight_smile:

أود أن أقولها بشكل مختلف قليلاً

بالنظر إلى عدم وجود عرض صورة رسمي (بشكل افتراضي) بخلاف المُشغّل، مما يجعل المُشغّل هو الطريقة الافتراضية والأساسية (الموصى بها) لإعداد Discourse، يمكن للمرء القول بأن البيان الأصلي لا يزال صالحًا :wink:

لكن هذه مجرد اختلافات في المصطلحات.

على أي حال - الموضوع هو:

هل يمكن لـ Discourse شحن صور Docker متكررة لا تحتاج إلى تهيئة أولية؟

من المناقشة بأكملها يبدو أن: “لا، لا يمكن لـ Discourse شحن صور Docker متكررة لا تحتاج إلى تهيئة أولية / لا يريد ذلك”، وهو ما تم إثباته.

لذلك، فإن الاقتراح بإضافة تعليق في الأعلى مباشرة، بأن مثل هذه الصورة لن يتم توفيرها، سيوفر الكثير من المتاعب :slight_smile:

هذا افتراض غير صحيح

لم نعطِ الأولوية لشحن صورة رسمية مع حزمة من الإضافات المحددة بعد

إنها عمل نفكر فيه، لدينا الكثير من الأفكار حول كيفية القيام بذلك، ببساطة لم تكن أولوية للشركة

5 إعجابات

ترجمة من شخص يعمل على مشروع آخر: “قد يحدث ذلك في المستقبل، ولكنه قد لا يحدث… نظرًا لأنه ليس أولوية / ليس على خارطة طريق، فإن احتمالات حدوثه ضئيلة للغاية” :wink:

ومع ذلك، بشكل أكثر جدية - مثل هذا الإعداد الأساسي مع مجموعة معقولة من الإضافات المدمجة سيكون رائعًا للغاية!

شكرًا على المدخلات! <3

للعلم - لقد قمت بإعداد طريقة لبناء صورة Discourse على جهاز تطوير ونشرها على خادم بطريقة تلغي الحاجة إلى استخدام البرنامج النصي للمشغل.
مزيد من المناقشة حول ذلك هنا في طلب سحب قمت بإنشائه.

لقد قمت بإعداد هذا بطريقة تجعله متوافقًا تمامًا مع إعداد Docker الرسمي لـ Discourse، لذلك لا داعي للقلق بشأن خروج هذا الحل عن الدعم أو تعطله.
الخلاصة حول كيفية عمل هذا هي أنني جعلت صورة Docker مسؤولة عن تنفيذ أوامر التمهيد عند بدء التشغيل (بدلاً من البرنامج النصي launcher).

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

نهج رائع.

أيضًا: مشغل مثير للاهتمام v2 (GitHub - discourse/launcher: Discourse Launcher CLI)!

إعجابَين (2)