مولّد Docker Compose

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

كيفية بناء ملف Compose

  1. 1

    أضف الخدمات

    حدد لكل خدمة اسمًا وصورة وتعيينات منافذ مضيف:حاوية وأحجام تخزين. توجد خدمتان جاهزتان كبداية.

  2. 2

    عدّل الصفوف أو احذفها

    عدّل أي حقل مباشرة، أو أضف خدمة أخرى بزر + Service، أو احذف الصف الذي لا تحتاجه.

  3. 3

    راجع ملف YAML الناتج

    تتحدث المعاينة أثناء الكتابة: توضع تعيينات المنافذ بين علامتي اقتباس ويُحذف مفتاح الإصدار كما تتطلب مواصفات Compose الحديثة.

  4. 4

    انسخ الملف

    انسخ ملف docker-compose.yml الناتج والصقه في جذر مشروعك.

مواصفات Compose الحديثة

يتبع Compose V2 (الملحق المرفق مع Docker Desktop ومحرك Docker الحديث) مواصفات Compose. مفتاح version: مهمَل؛ يحذفه المولّد. مفاتيح المستوى الأعلى هي services وnetworks وvolumes وconfigs وsecrets.

بنية الخدمة

تبدو الخدمة القريبة من الإنتاج هكذا:

services:
  web:
    image: nginx:1.27-alpine
    restart: unless-stopped
    ports:
      - "80:80"
    volumes:
      - ./public:/usr/share/nginx/html:ro
    depends_on:
      app:
        condition: service_healthy
    networks:
      - frontend
      - backend
    healthcheck:
      test: ["CMD", "wget", "--spider", "-q", "http://localhost/health"]
      interval: 30s
      timeout: 5s
      retries: 3

أحجام التخزين: الربط المباشر مقابل الحجم المسمّى

  • الربط المباشر (./app:/var/www) يربط الحاوية بمسار على المضيف؛ ممتاز للتطوير المحلي لأن التغييرات تظهر فورًا.
  • الحجم المسمّى (pgdata:/var/lib/postgresql/data) يديره Docker ويبقى مستقلًا عن أي مسار على المضيف؛ الخيار الصحيح لقواعد البيانات وأي شيء لا تريد حذفه بالخطأ باستخدام rm -rf.
  • الحجم المجهول - تجنّبه. يبقى بعد إعادة التشغيل لكنه يختفي دون تحذير عند docker compose down -v.

الشبكات

افتراضيًا ينشئ Compose شبكة باسم المشروع ويصل كل خدمة بها. يكون التصريح بشبكات صريحة مفيدًا عندما:

  • تريد عزل قاعدة بيانات عن خدمة مواجهة للجمهور.
  • تحتاج إلى جسر بشبكة فرعية مخصصة لتتوافق مع البنية التحتية القائمة.
  • تريد ربط الحاويات بشبكة خارجية موجودة مسبقًا (external: true).

أخطاء شائعة يجدر تجنبها

  • تضارب مفتاح الإصدار. version: "3.8" في الأعلى يمنع الميزات الأحدث مثل start_interval في healthcheck من العمل على Compose القديم؛ يحذف المولّد مفتاح الإصدار.
  • اقتباس المنافذ. يُفسَّر 8080:80 على أنه YAML بنظام العدّ الستيني في بعض الحالات النادرة؛ يضع المولّد دائمًا تعيينات المنافذ بين علامتي اقتباس.
  • أسرار مكتوبة مباشرة. الأسرار المكتوبة مباشرة في compose.yml تُدرج في git. احتفظ بها في env_file أو في مخزن الأسرار الخاص بالمنصة.
  • depends_on بدون شرط. depends_on: [db] البسيط ينتظر بدء الحاوية لا جاهزية الخدمة. استخدم condition: service_healthy وأضف فحص صحة إلى الخدمة التابعة.

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

مواصفات Compose الحالية (المنسجمة مع Docker Compose V2). يحذف الملف مفتاح version:، وهذه طريقة كتابة ملفات Compose الحديثة. يعمل مع Docker Compose V2.22 والإصدارات الأحدث.

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

لا، تركز هذه الأداة على compose.yml. لملفات Dockerfile، استخدم مولّد Dockerfile الذي يتولى اختيار الصورة الأساسية وترتيب COPY/RUN لخمس تقنيات.

لا. تُستخدم تعريفات الخدمات فقط لبناء ملف YAML في هذه الصفحة. لا تُخزَّن ولا تُرفع ولا تُشارَك.

أدوات ذات صلة

الأداة متاحة بلغات أخرى