محتويات الدورة

Docker / Compose وعقود التشغيل الموثوقة / الدرس 7

مشروعات Compose والإعداد المحسوم

عامل ملف Compose كنموذج تصريحي بنطاق مشروع صريح وراجع نتيجته قبل إجراءات التشغيل.

وقت القراءة التقريبي: 3 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • اشرح الخدمات والشبكات والوحدات وهوية المشروع والبناء مقابل التشغيل.
  • افحص الاستيفاء والدمج والإعداد النهائي بأمان.

الخدمة تعريف تشغيل مطلوب

تصف Compose خدمات مترابطة ومواردها. الخدمة نموذج لا معرّف حاوية دائم؛ وقد يستبدل تجديدها العملية والعنوان مع إبقاء التخزين المستقل. يقيد اسم المشروع الموارد ويمنع تصادم البيئات. اختره واستخدم الملفات وخيارات المشروع نفسها في الفحص والتشغيل كيلا تخاطب نسخة مختلفة.

اقرأ نموذج خدمة واحدة كاملاً

يفترض النموذج وجود app.py و Dockerfile السابقين في السياق. تحدد build كيفية إنتاج الصورة وتسمي image الصورة الناتجة أو المختارة. لا يعني جمعهما أن كل فحص يبني أو يشغل. النشر المحلي للمختبر، ولا يتضمن أسراراً أو حالة عمل أو ادعاء إتاحة إنتاجية.

yaml ملف compose.yaml كامل للمثال
name: parcel-lab
services:
  api:
    build:
      context: .
      dockerfile: Dockerfile
    image: parcel-api:lab
    ports:
      - "127.0.0.1:18080:8080"

المشروع parcel-lab والخدمة api. تتيح الشبكة الافتراضية لنظراء المشروع استخدام api:8080، وينشر المضيف 127.0.0.1:18080. يحتاج المحتوى والأسماء والحالة أدلة مستقلة؛ فلا يثبت التحليل أياً منها.

احسم النموذج دون بدء الخدمات

تحلل docker compose config الملفات وتحسم الاستيفاء وتعرض النموذج. تفحص --quiet الصحة دون طباعته وتعرض --services الأسماء. هذه عمليات إعداد لا إثبات سلامة المحرك أو نجاح النشر. قد يكشف الناتج الكامل أسراراً مستوفاة، ففضل الفحص الصامت أو عرضاً ضيقاً غير سري. راجع المجلد وخيارات -f.

bash فحوص إعداد للمراجعة فقط
docker compose -f compose.yaml config --quiet
docker compose -f compose.yaml config --services
الناتج المتوقع
api

يحوي عرض الخدمات api لهذا النموذج. لا يصدر النجاح الصامت ناتجاً معتاداً، لكننا لا ندعي التنفيذ. أصلح الحقول المجهولة والمتغيرات المطلوبة والأنواع قبل أي تشغيل مصرح.

تحتاج الملفات المتعددة إلى فهم كل حقل

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

افصل الفحص والبناء والاستبدال والإزالة

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

الأخطاء الشائعة وإصلاحها

Additional property is not allowed.

لماذا يحدث؟
الخيار خطأ إملائياً أو تحت كائن Compose غير صحيح.
كيف تصلحه؟
قارنه بالمواصفة وافحص المسافات.
كيف تتجنب تكراره؟
افحص النموذج المدمج نفسه قبل التشغيل.

تغيب الحاويات المتوقعة من عرض المشروع.

لماذا يحدث؟
اختير نطاق آخر باسم مشروع أو ملفات أو سياق مختلف.
كيف تصلحه؟
أثبت المشروع والسياق قبل الحكم بالفقد.
كيف تتجنب تكراره؟
وثق خيارات المشروع الفعلية في إجراءات التشغيل.

يبقي ملف التجاوز منفذاً منشوراً دون توقع.

لماذا يحدث؟
فُهم الدمج كاستبدال كامل للقائمة.
كيف تصلحه؟
افحص الناتج واستخدم تجاوز الحقل المدعوم.
كيف تتجنب تكراره؟
راجع الكشف النهائي لا فرق ملف التجاوز وحده.

اختبر فهمك

1. هل تثبت config --quiet أن parcel-api تخدم الطلبات؟

اعرض الحل المشروح

لا؛ تتحقق من النموذج ولا تثبت الصورة أو البدء أو الشبكة أو الجاهزية. افصل مراحل الفحص وسجل الفحوص المنفذة فعلاً بأدلتها، ولا تحول نجاح التحليل إلى ادعاء نشر.

2. لماذا يستخدم الفحص ترتيب -f نفسه المستخدم للنشر؟

اعرض الحل المشروح

قد تغير الملفات اللاحقة السابقة وفق قواعد الدمج. ينتج ترتيب آخر صورة أو تركيباً أو بيئة أو منافذ مختلفة. وفحص الأساس وحده قد يعتمد نموذجاً لا تستخدمه البيئة فعلاً.

أهم ما تعلمته

  • هوية المشروع والإعداد المحسوم جزء من عقد التشغيل.
  • صحة النموذج مرحلة فحص وليست إثبات خدمة عاملة.

المراجع الرسمية