ما هي جميع الخطافات التي يمكنني استخدامها في app.yml

لا توجد في الواقع قائمة عالمية ثابتة لأنواع الخطافات في app.yml.
يتم توفير الخطافات ديناميكيًا بواسطة Pups، ولا يمكنك إلا الارتباط بتلك الموجودة داخل القوالب التي تقوم بتضمينها.


:magnifying_glass_tilted_left: كيف يعمل

عندما ترى شيئًا مثل:

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git

هذا يعمل لأن القوالب تحتوي على خطوة مثل:

- hook: code
  run:
    - exec: ...

يتيح لك Pups إرفاق الأوامر قبل أو بعد أي من نقاط الخطاف المحددة.
لذلك، إذا حدد قالب hook: code، يمكنك استخدام before_code: أو after_code:.
إذا حدد hook: assets_precompile، يمكنك استخدام before_assets_precompile: أو after_assets_precompile: - وهكذا.

إذا لم يكن هناك hook: restart (على سبيل المثال)، فلن يتم تشغيل after_restart: ببساطة.


:white_check_mark: الخطافات المعروفة بوجودها في القوالب القياسية

من templates/*.yml الافتراضية التي يتم شحنها مع Discourse Docker:

اسم الخطاف الاستخدام الشائع يعمل مع
code مرحلة الإعداد الرئيسية لاستنساخ الإضافات، وتعديلات الملفات المخصصة، وما إلى ذلك. before_code: / after_code:
assets_precompile بعد تجميع أصول Rails (على سبيل المثال، التحميل إلى S3، التنظيف) after_assets_precompile:
web للتعديلات في اللحظة الأخيرة قبل تشغيل عملية الويب before_web:

غالبًا ما سترى after_code: و before_code: مستخدمة في أمثلة تثبيت الإضافات - هذه هي الوحيدة المطلوبة في معظم الإعدادات.


:cross_mark: الخطافات التي لا توجد افتراضيًا

أسماء مثل after_restart أو after_post_boot لا تتوافق مع أي hook: داخل القوالب القياسية، لذلك لا يعرف Pups أين يربطها.
لن يتم تشغيلها إلا إذا أضفت خطوة hook: restart مطابقة في قالب مخصص.


:toolbox: كيفية العثور على جميع الخطافات المتاحة على نظامك

من مجلد /var/discourse الخاص بك، قم بتشغيل:

grep -R "hook:" -n templates/ samples/

سيؤدي ذلك إلى سرد كل اسم خطاف تدعمه القوالب التي تقوم بتضمينها حاليًا.
أي شيء تجده هناك يمكن استخدامه كـ before_<name>: أو after_<name>: داخل كتلة hooks:.


:blue_book: مرجع

يتم شرح هذا السلوك بإيجاز في Pups README (أداة إدارة التكوين التي تستخدمها إعدادات Docker الخاصة بـ Discourse):

“الخطافات هي نقاط في القوالب تسمح بحقن الأوامر قبل أو بعد خطوة موسومة بـ hook:.”


:puzzle_piece: عمليًا

  • استخدم after_code: لمعظم أوامر shell المخصصة (مثل تثبيت الإضافات).
  • بالنسبة للأشياء التي يجب أن تحدث عند تشغيل الحاوية أو إعادة تشغيلها، استخدم برنامج بدء تشغيل صغير أو مهمة supervisord بدلاً من اختراع أسماء خطافات جديدة.
  • لإضافة نوع خطاف خاص بك، قم بإنشاء قالب جديد بإدخال hook: something مخصص، ثم استهدفه من app.yml.

باختصار:
فقط أسماء الخطافات التي تظهر فعليًا كإدخالات hook: في قوالبك موجودة.
في Discourse Docker القياسي، هذه هي أساسًا code و assets_precompile و web.

إعجابَين (2)