لا توجد في الواقع قائمة عالمية ثابتة لأنواع الخطافات في app.yml.
يتم توفير الخطافات ديناميكيًا بواسطة Pups، ولا يمكنك إلا الارتباط بتلك الموجودة داخل القوالب التي تقوم بتضمينها.
كيف يعمل
عندما ترى شيئًا مثل:
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:ببساطة.
الخطافات المعروفة بوجودها في القوالب القياسية
من templates/*.yml الافتراضية التي يتم شحنها مع Discourse Docker:
| اسم الخطاف | الاستخدام الشائع | يعمل مع |
|---|---|---|
code |
مرحلة الإعداد الرئيسية لاستنساخ الإضافات، وتعديلات الملفات المخصصة، وما إلى ذلك. | before_code: / after_code: |
assets_precompile |
بعد تجميع أصول Rails (على سبيل المثال، التحميل إلى S3، التنظيف) | after_assets_precompile: |
web |
للتعديلات في اللحظة الأخيرة قبل تشغيل عملية الويب | before_web: |
غالبًا ما سترى after_code: و before_code: مستخدمة في أمثلة تثبيت الإضافات - هذه هي الوحيدة المطلوبة في معظم الإعدادات.
الخطافات التي لا توجد افتراضيًا
أسماء مثل after_restart أو after_post_boot لا تتوافق مع أي hook: داخل القوالب القياسية، لذلك لا يعرف Pups أين يربطها.
لن يتم تشغيلها إلا إذا أضفت خطوة hook: restart مطابقة في قالب مخصص.
كيفية العثور على جميع الخطافات المتاحة على نظامك
من مجلد /var/discourse الخاص بك، قم بتشغيل:
grep -R "hook:" -n templates/ samples/
سيؤدي ذلك إلى سرد كل اسم خطاف تدعمه القوالب التي تقوم بتضمينها حاليًا.
أي شيء تجده هناك يمكن استخدامه كـ before_<name>: أو after_<name>: داخل كتلة hooks:.
مرجع
يتم شرح هذا السلوك بإيجاز في Pups README (أداة إدارة التكوين التي تستخدمها إعدادات Docker الخاصة بـ Discourse):
“الخطافات هي نقاط في القوالب تسمح بحقن الأوامر قبل أو بعد خطوة موسومة بـ
hook:.”
عمليًا
- استخدم
after_code:لمعظم أوامر shell المخصصة (مثل تثبيت الإضافات). - بالنسبة للأشياء التي يجب أن تحدث عند تشغيل الحاوية أو إعادة تشغيلها، استخدم برنامج بدء تشغيل صغير أو مهمة
supervisordبدلاً من اختراع أسماء خطافات جديدة. - لإضافة نوع خطاف خاص بك، قم بإنشاء قالب جديد بإدخال
hook: somethingمخصص، ثم استهدفه منapp.yml.
باختصار:
فقط أسماء الخطافات التي تظهر فعليًا كإدخالات hook: في قوالبك موجودة.
في Discourse Docker القياسي، هذه هي أساسًا code و assets_precompile و web.