كيف أقوم بإجراء تعديلات على app/views/layouts/؟

سؤال بسيط وسريع:

بالتأكيد، يجب أن أكون فقدت بعض خلايا دماغي!

قمنا بإجراء بعض التعديلات في حاوية التطبيق في أحد الملفات داخل مجلد /var/www/discourse/app/views/layouts.

ثم اعتقدنا (كحمقى) أنه يمكننا ببساطة إعادة بناء الحاوية باستخدام الأمر /var/discourse/launcher rebuild app (ليس كذلك!)، ولكن في كل مرة نقوم بذلك، يتم استبدال تعديلاتنا.

لا نرغب في عمل نسخة مشتقة (fork) من discourse؛ ولكننا نود إعادة بناء التطبيق باستخدام launcher دون أن يؤدي ذلك إلى استبدال تعديلاتنا المحلية.

هل يمكن لأحد أن يخبرنا بكيفية القيام بذلك؟

شكرًا لكم!

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

السبب هو أن launcher يقوم بسحب صورة Discourse الأساسية، وهذه الصورة تحتوي على مجلد .git، وملف إعدادات git يشير بطبيعته إلى مستودع Discourse الرئيسي، مما يؤدي إلى استبدال تغييراتنا:

launcher

pull_image() {
  # إضافة محاولة إعادة واحدة للتغلب على أخطاء TLS في Docker Hub
  $docker_path pull $image || $docker_path pull $image
}

من قبل، ظننا خطأً أن launcher يبني الصورة (كيف فاتنا هذا؟!)، والآن أصبح من الواضح أنه يسحب صورة أساسية من Docker Hub.

نعود إلى نقطة البداية!

هل هناك علم (flag) يمكننا تعيينه لمنع launcher من سحب الصورة الأساسية والقيام ببنائها بدلاً من ذلك؟

مرحباً @DBHacker

يبدو أن ما قد ترغب في فعله هو:

  1. إجراء تغييرات على الحاوية الأساسية (كما ذكرت)
  2. وضع علامة على الصورة وحفظها
  3. دفع الصورة إلى مستودع صور Docker الخاص بك
  4. تعديل launcher لاستخدام docker pull لجلب الصورة الأساسية المعدلة من مستودعك

أتمنى أن يكون هذا مفيداً بطريقة ما!

بغض النظر، هذا غير مدعوم على ميتا (على الأقل، أعتقد ذلك)، لذا فأنت مسؤول عن نفسك.

استمتع بالبرمجة! :slight_smile:

ملاحظة: لم أجرب هذا… لكنه يبدو وكأنك تستمتع! :slight_smile:

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

يجب عليك إجراء هذه التغييرات في إضافة أو مكون قالب.

6 إعجابات

مرحبًا @pfaffman

أتفق معك تمامًا بأن الإضافات ومكونات السمات هي الطريقة المثلى! هذه الطريقة مدعومة بالكامل وهي جيدة للبقاء متزامنًا مع فريق تطوير Meta.

كما أنه من الجيد أن تكون فضوليًا، واستكشاف الاحتمالات، واكتساب فهم أعمق لمنصة Discourse؛ وبعد قراءة هذا الموضوع أمس، قمت بإنشاء سجل Docker محلي، وسميت صورة Discourse الأساسية محليًا، ثم دفعت تلك الصورة إلى سجل Docker الجديد الخاص بي (localhost)، وأعدت بناء تطبيق Discourse بسحب صورة Discourse الأساسية من السجل.

أعتقد أن التجربة والتعلم أكثر عن Discourse أمر ممتع، وقد تعلمت الكثير من هذا الاستكشاف/التجربة الخاصة بمسؤولي الأنظمة. وبالطبع، هذه ليست الطريقة التي ندير بها التطبيقات في بيئة الإنتاج، لكنني تعلمت الكثير من خلال المرور بالخطوات اللازمة لسحب صورة Discourse الأساسية من localhost بدلاً من السحابة، وكان الأمر مدهشًا في سهولته، لذا قمت بكتابة هذا التجربة لمشاركته مع مسؤولي الأنظمة الفضوليين الآخرين:

آمل أن يستفيد مستكشفو مسؤولي الأنظمة الآخرون من هذه التجربة بطريقة ما، ولو بشكل بسيط.

ابقوا فضوليين

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

هناك طريقة فائقة البساطة لتنفيذ ذلك دون القلق بشأن الصور أو إنشاء إضافة. بشرط أن تقوم فقط بتعديل ملفات مسطحة موجودة، فيمكنك تعديلها من خلال app.yml.

ابحث عن hooks و pups. العديد من الأدلة الأخرى تستخدم بالفعل هذا النهج.

5 إعجابات

شكرًا لك @neounix

أنا أيضًا أحب التعلم وتجربة أشياء جديدة.

في يوم ما، عندما أجد وقتًا، سأحاول التعلم المزيد عن Docker والسجلات المحلية.

في الوقت الحالي، سألتزم بتطوير الإضافات، لأنها مدعومة من Discourse وتتوافق مع نموذج التطوير الخاص بها.

كما قلت، تعلم هذه الأمور ممتع، ولكن من الجيد أيضًا البقاء ضمن التيار الرئيسي!

:slight_smile:

إعجابَين (2)

أتفق معك.

حتى بعد تجربة سجل Docker المحلي وصورة Discourse الأساسية المحلية، لم أستطع الحصول على نتائج متسقة (غير متأكد من السبب، ربما أغفلت بعض التفاصيل الرئيسية في الإعداد).

من ناحية أخرى، تعلمت المزيد حول سجلات Docker المحلية وكيفية بناء وإدارة واحدة منها.

فقط تجربة جانبية مع Docker… تعلمت الكثير بالتأكيد!

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

نعم، يبدو أن الخيار الوحيد الممكن هو إضافة.

شكرًا للجميع على الردود والمساعدة.

إعجابَين (2)

ما نوع تغييرات الملفات التي تجريها؟

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