0Pricing
Docker & DevOps Fundamentals · درس

كتابة ملف Compose

تعلّموا صياغة YAML للملف `docker-compose.yml` لتعريف الخدمات والشبكات ووحدات التخزين

كتابة ملف Compose درس مجاني في Docker & DevOps Fundamentals على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Docker & DevOps Fundamentals، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Docker & DevOps Fundamentals 4 دروس في المجموع.

ملف Compose: المخطط

مرحبًا بك في كتابة ملفات Docker Compose! ملف docker-compose.yml هو مخططك لتعريف تطبيقات Docker متعددة الحاويات وتشغيلها.

يستخدم بناء جملة YAML لإعداد خدمات تطبيقك وشبكاته ووحدات تخزينه في ملف واحد.

كتابة ملف Compose — رسم توضيحي 1

YAML: تذكير سريع

تُكتب ملفات Docker Compose بلغة YAML (YAML Ain't Markup Language). وهي معيار سهل للبشر لتسلسل البيانات.

  • أزواج المفتاح والقيمة: key: value
  • القوائم: تبدأ العناصر بواصلة (- item)
  • المسافات البادئة: ضرورية لتعريف البنية والتسلسل الهرمي. استخدم المسافات، وليس علامات الجدولة!

المفتاح `version`

يبدأ كل ملف docker-compose.yml بمفتاح version. ويحدد هذا المفتاح إصدار تنسيق ملف Compose، مما يساعد Docker Compose على فهم كيفية تفسير ملفك.

بالنسبة إلى معظم التطبيقات الحديثة، يُوصى باستخدام '3.8' أو إصدار مشابه من '3.x'.

version: '3.8'

تعريف `services`

قسم services هو المكان الذي تعرّف فيه الحاويات الفردية (الخدمات) التي يتكون منها تطبيقك. وتمثل كل خدمة مكوّنًا، مثل خادم ويب أو قاعدة بيانات.

ضمن services، تسرد كل خدمة باستخدام اسم تختاره.

version: '3.8'
services:
  web:
    # Service configuration goes here
  database:
    # Another service's configuration

‏`image` و`ports` في الخدمة

داخل تعريف الخدمة، يحدد image صورة Docker التي ينبغي استخدامها (مثل nginx:latest). ويربط المفتاح ports منافذ الحاوية بمنافذ المضيف، مما يتيح الوصول الخارجي.

  • يربط "80:80" منفذ المضيف 80 بمنفذ الحاوية 80.
version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

‏`volumes` في الخدمة

يتيح لك المفتاح volumes ضمن الخدمة تركيب مسارات من جهاز المضيف داخل الحاوية، أو استخدام وحدات تخزين مُسمّاة للتخزين المستمر.

يركب هذا المثال الدليل المحلي ./app في /usr/src/app داخل الحاوية.

version: '3.8'
services:
  app:
    image: my-node-app
    volumes:
      - ./app:/usr/src/app

متغيرات `environment` الخاصة بالخدمة

استخدم المفتاح environment لتمرير متغيرات البيئة إلى حاويات خدمتك. وهذا أمر بالغ الأهمية للإعدادات التي قد تتغير بين البيئات، مثل سلاسل اتصال قاعدة البيانات.

يمكن إدراج المتغيرات على هيئة أزواج مفتاح-قيمة أو بتنسيق القائمة.

version: '3.8'
services:
  backend:
    image: my-api
    environment:
      - DATABASE_URL=postgres://user:pass@host:5432/db
      - NODE_ENV=development

`networks` و`volumes` على المستوى الأعلى

إلى جانب تعريفها داخل الخدمات، يمكنك أيضًا تعريف وحدات التخزين المُسمّاة والشبكات المخصصة على المستوى الأعلى من ملف docker-compose.yml.

يتيح ذلك تنظيم التعريفات القابلة لإعادة الاستخدام لاستمرارية البيانات والاتصال بين الحاويات.

version: '3.8'
services:
  # ... service definitions ...

networks:
  my_app_network:
    # custom network configuration

volumes:
  db_data:
    # named volume configuration

جمع كل العناصر معًا

إليك مثالًا صغيرًا يجمع ما تعلمناه. يعرّف المثال خدمة ويب وخدمة قاعدة بيانات، باستخدام صورة ومنافذ ووحدة تخزين مُسمّاة.

لاحظ كيف ينشئ مستوى المسافة البادئة البنية.

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - web_content:/usr/share/nginx/html
  db:
    image: postgres:13
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=secret

volumes:
  web_content:
  db_data:

التحقق من ملف Compose

أي مقتطفات YAML التالية يعرّف بشكل صحيح خدمة Docker Compose باسم 'api' تستخدم الصورة 'myapi:1.0' وتكشف المنفذ 3000 للحاوية على المنفذ 8080 للمضيف؟

مراجعة: أساسيات ملف Compose

أحسنتم! لقد تعلمتم أساسيات كتابة ملف docker-compose.yml.

  • يبدأ بالمفتاح version.
  • يعرّف services مكوّنات تطبيقكم.
  • تستخدم كل خدمة image، ويمكنها كشف ports، واستخدام volumes لاستمرارية البيانات، وتعيين متغيرات environment.
  • تتيح networks وvolumes على المستوى الأعلى إجراء إعدادات متقدمة.

يُعد إتقان بنية YAML هذه مفتاحًا لتنسيق التطبيقات متعددة الحاويات!

الأسئلة الشائعة

هل درس «كتابة ملف Compose» مجاني؟

نعم — نص درس «كتابة ملف Compose» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Docker & DevOps Fundamentals، انتقل إلى CoddyKit PRO. تتضمن دورة Docker & DevOps Fundamentals 4 دروس في المجموع.

ماذا ستتعلم في «كتابة ملف Compose»؟

تعلّموا صياغة YAML للملف `docker-compose.yml` لتعريف الخدمات والشبكات ووحدات التخزين تتمرن على Docker & DevOps Fundamentals مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Docker & DevOps Fundamentals؟

لا تُشترط خبرة سابقة. Docker & DevOps Fundamentals على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «كتابة ملف Compose»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Docker & DevOps Fundamentals هذا؟

نعم. كل درس في Docker & DevOps Fundamentals يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ما Docker Compose؟
  2. كتابة ملف Compose
  3. نشر التطبيقات متعددة الخدمات
  4. متغيرات البيئة وملفات .env
← العودة إلى Docker & DevOps Fundamentals