How-To Guides

إتقان تطبيقات الحاويات المتعددة: دليل شامل لإعداد Docker Compose

أصبح Docker Compose أداة لا غنى عنها للمطورين ومهندسي DevOps على حد سواء. في حين أن تطبيقات الحاوية الواحدة مفيدة للاختبار، فإن المشاريع الحقيقية تعتمد دائمًا تقريبًا على خدمات متعددة — خوادم ويب، قواعد بيانات، طبقات تخزين مؤقت، وأطوار رسائل. يسهّل Docker Compose التعريف وتشغيل تطبيقات الحاويات المتعددة باستخدام ملف YAML واحد لتكوين خدماتك وشبكاتها وحجماتها. سيرشدك هذا الدليل عبر الخطوات الأساسية لإعداد وإدارة مشاريعك باستخدام Docker Compose.

فهم بنية ملف docker-compose.yml

قلب أي مشروع Docker Compose هو ملف docker-compose.yml. يحدد هذا الملف بنية تطبيقك. في جوهره، يتكون من ثلاث مفاتيح رئيسية على مستوى أعلى: version (رغم أنها أقل أهمية في الإصدارات الأحدث)، وservices، وخيارياً volumes وnetworks.

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

version: '3.8'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    environment:
      - DATABASE_URL=postgresql://db:5432
  db:
    image: postgres:14
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=secretpassword

volumes:
  db-data:

تهيئة بيئتك

قبل الغوص في التكوينات المعقدة، تأكد من أن تثبيت Docker لديك محدث. يتم توزيع Docker Compose الآن كإضافة مستقلة، لذا لا تحتاج إلى تثبيت منفصل. تحقق من إعدادك من خلال تشغيل docker compose version في طرفية النظام. إذا نجح الأمر، فأنت مستعد للمتابعة.

أنشئ مجلداً جديداً لمشروعك وابدأه كم مشروع Compose. على الرغم من عدم وجود أمر "init" محدد لـ Compose، فإن إبقاء ملف docker-compose.yml وملف Dockerfile في نفس المجلد الجذري هو ممارسة جيدة للحفاظ على المسارات النسبية.

إدارة دورة الحياة

بمجرد تكوين ملف YAML الخاص بك، يمكنك التحكم في دورة حياة تطبيقك بعدة أوامر بسيطة. لبدء جميع الخدمات المحددة في وضع منفصل، استخدم:

docker compose up -d

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

تكوينات متقدمة: الشبكات والأسرار

للبيئات المشابهة للإنتاج، تعتبر الأمان والعزل أمراً بالغ الأهمية. يتيح لك Docker Compose إنشاء شبكات جسر مخصصة لعزل البيانات الحساسة. بشكل افتراضي، يتم ربط جميع الخدمات بشبكة واحدة، لكن يمكنك تحديد شبكات معينة:

networks:
  frontend:
  backend:

services:
  web:
    networks:
      - frontend
  db:
    networks:
      - backend

بالإضافة إلى ذلك، تجنب ترميز الأسرار في ملفات YAML الخاصة بك. بدلاً من ذلك، استخدم ملفات متغيرات البيئة (.env) أو أسرار Docker. يمكنك الإشارة إلى المتغيرات في ملف Compose الخاص بك باستخدام صيغة ${VARIABLE_NAME}، والتي ستجلب القيم من بيئة المحلية الخاصة بك أو من ملف .env موضوع في مجلد المشروع.

الأخطاء الشائعة واستكشاف الأخطاء وإصلاحها

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

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

خاتمة

يوفر Docker Compose تبسيط تطوير ونشر تطبيقات الحاويات المتعددة، مما يقلل من تعقيد إدارة الخدمات المترابطة. من خلال إتقان بنية ملف docker-compose.yml، وفهم أوامر دورة الحياة، وتنفيذ أفضل الممارسات للأمان والشبكات، يمكنك بناء تطبيقات قوية وقابلة للتوسع بسهولة. ابدأ بإعدادات بسيطة وادمج تدريجياً ميزات مثل الشبكات المخصصة والأحجام الدائمة مع نمو مشروعك. استغل قوة Compose لأتمتة سير عملك والتركيز على ما يهم أكثر: كتابة أكواد رائعة.

Share: