لا يمكنك ببساطة "ضغط مجلد /var/discourse ونقله إلى جهاز آخر، ثم فك ضغطه وتشغيل تطبيق Discourse.
أحد الأسباب الرئيسية هو أنه عند بناء / تهيئة Discourse، يقوم (أداة التشغيل كما أتذكر من رأسه) بالتحقق مما إذا كان حاوية Discourse الأساسية (صورة) موجودة، وسحب صورة Docker الأساسية لـ Discourse (إذا لم تكن موجودة)، ثم تشغيل هذه الصورة الأساسية داخل حاوية.
بعد سحب git الأساسي، ستقوم عملية البناء ببناء صورة Docker أخرى (التطبيق).
كلا هاتين الصورتين (الصورة الأساسية وصورة التطبيق) لا توجدان داخل /var/discourse. لذا، فإن ضغط /var/discourse هو مجرد “حل” جزئي (باستخدام هذا المصطلح بمرونة).
تم بناء صور Docker هذه كصور Docker وكجزء من Docker؛ فهي لا “تعيش” في /var/discourse، بل يتم بناؤها هناك ثم نقلها إلى Docker كصور Docker.
قد يكون من الممكن تعديل ملف yml الخاص بالحاوية وإعادة البناء من الصفر، ولكن الطريقة الأكثر تقليدية هي حفظ:
- ملف (ملفات) yml الخاص بالحاوية
- النسخة الاحتياطية الكاملة مع الملفات المرفقة
ثم تعديل ملف yml الخاص بالحاوية، واستنساخ مستودع discourse-docker وإعادة البناء.
بعد ذلك، استعد النسخة الاحتياطية الكاملة، بما في ذلك الملفات المرفقة (من سطر الأوامر داخل الحاوية).
استخدام GitHub كمستودع هو حل أنظف من الطريقة القديمة “unixy” المتمثلة في “ضغط كل شيء” و"نقل كل شيء" إلى خادم آخر. ومع ذلك، حتى مع “الطريقة القديمة لنظام Unix”، فإن هذه الطريقة غالبًا ما لا توفر حلاً كاملاً لأن هناك مكتبات مشتركة في النظام، ومجلدات المستخدمين المشتركة، وأكثر من ذلك، والتي ليست جزءًا من دليل التوزيع، وهناك ملفات etc ليست في الجذر الرئيسي للتوزيع، إلخ.
لذلك، حتى على معظم أنظمة Linux الحديثة، نستخدم apt (على سبيل المثال في Ubuntu) لسحب المستودع. في حالة Docker لـ Discourse، تقوم بسحب (وبناء) discourse-docker لإعداد الحاوية الأساسية، ومستودع آخر لـ Discourse لبناء التطبيق. لذا، فإن /var/discourse هو “مكان للبناء” (الصور) و"مكان للمشاركة" (البيانات، النسخ الاحتياطية، الملفات الثابتة العامة، إلخ).
أتمنى أن يكون هذا الملخص مفيدًا بطريقة ما.