لماذا يرتبط مصطلح "rebuild" ارتباطًا وثيقًا بحالة تشغيل الحاوية؟

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

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

لا تزال هجرات قاعدة البيانات ومهمة assets:precompile بحاجة إلى التنفيذ على الجهاز المستهدف. في معظم الحالات، ستكون هجرة قاعدة البيانات سريعة. من ناحية أخرى، تُعد مهمة assets:precompile مشكلة لأنها الخطوة التي تستغرق وقتًا أطول. أعتقد أن السبب في ذلك هو أن بعض الأصول تحتاج إلى معرفة بعض إعدادات البيئة كما هي مُعرَّفة في قاعدة البيانات، مثل بعض قواعد CSS، لتنفيذها.

سيكون ذلك رائعًا للغاية إذا تم تقسيم هذه المهمة إلى جزأين: حيث تُنفَّذ جميع الأصول التي لا تعتمد على البيئة أولاً، ويمكن تشغيلها في بيئة CI، وفي الخطوة الثانية يتم تجميع الأصول التي تعتمد فقط على أشياء في قاعدة البيانات وما إلى ذلك… ومع ذلك، لا أعرف مدى صعوبة تنفيذ ذلك تقنيًا.

أناقش بدء تشغيل حاوية التطبيق في خطوتين في الموضوع التالي:

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