مولّد Docker Compose

ما الذي يعمل في هذه المنظومة

التالي

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

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

  1. 1

    أضف الخدمات

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

  2. 2

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

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

  3. 3

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

    راجع ملف YAML الناتج: تعيينات المنافذ بين علامتَي اقتباس، وكل وحدة تخزين مسمّاة معلنة في نهاية الملف، ومفتاح version محذوف كما تتوقع مواصفة 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 والإصدارات الأحدث.

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

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

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

أدوات ذات صلة

مرجع جدول ASCII

جدول ASCII كامل من 0 إلى 127 مع التمثيل العشري والست عشري والثماني والثنائي والمرجع الرقمي في HTML لكل محرف، بما في ذلك أكواد التحكم مثل NUL وLF وDEL.

مرجع أحرف HTML

قائمة قابلة للبحث بكيانات HTML، مع رموزها المسمّاة والرقمية، بالإضافة إلى خيار النسخ بنقرة واحدة للأحرف والرموز الخاصة.

عدّاد FPS

قِس معدل الإطارات FPS في المتصفح عبر requestAnimationFrame: تنعيم، وأدنى وأقصى معدل إطارات، وحد تنبيه، ورسم بياني اختياري. يعمل محليًا بلا رفع ملفات وبلا API.

أداة إزالة التشفير في لغة جافا سكريبت (JavaScript Deobfuscator)

إزالة التشفير من كود جافا سكريبت مُصغَّر أو مُعبَّأ باستخدام إعادة تسمية المتغيرات، وفك ترميز السلاسل النصية ومصفوفات البيانات، بالإضافة إلى عكس تسطيح تدفق التحكم وتحسين هيكله.

مرجع اختصارات لوحة المفاتيح

ابحث في الاختصارات الافتراضية الموثقة لـ VS Code وChrome وBash مع GNU Readline على macOS وWindows وLinux.

مولد تراخيص

قم بإنشاء النص الكامل لترخيصات المصدر المفتوح مع إدخال اسمك والسنة المقابلة، ويشمل ذلك تراخيص MIT وApache 2.0 وGPLv3 وBSD-3 وMPL-2.0 وCC.

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