مولّد Docker Compose

أنشئ docker-compose.yml صالحًا من نموذج: الخدمات والصور والمنافذ والبيئة ووحدات التخزين وdepends_on وسياسات إعادة التشغيل، مع إعدادات مسبقة لـ PostgreSQL وMySQL وRedis.

الخدمة 1
الخدمة 2
docker-compose.yml

يتبع مواصفات Compose الحالية (بدون مفتاح "version:"). تُعرَّف وحدات التخزين المسماة تلقائيًا. غيّر كلمات المرور التجريبية قبل الاستخدام.

أدوات ذات صلة

عرض الكل

ما هو مولّد Docker Compose؟

ابنِ docker-compose.yml لإعدادات الحاويات المتعددة دون عناء مسافات YAML البادئة. أضف الخدمات من إعدادات مسبقة (PostgreSQL وMySQL وRedis وMongoDB وNginx وتطبيقك) أو ابدأ فارغًا، ثم املأ الصورة أو سياق البناء والمنافذ ومتغيرات البيئة ووحدات التخزين والاعتماديات وسياسة إعادة التشغيل والأمر. يتحدّث YAML أثناء الكتابة وتُشرح الأخطاء.

كيفية استخدام مولّد Docker Compose

  1. عدّل الخدمات النموذجية أو استخدم إضافة خدمة لإدراج إعداد مسبق.
  2. لكل خدمة اضبط الصورة (أو سياق البناء) والمنافذ ومتغيرات البيئة ووحدات التخزين وتعتمد على وسياسة إعادة التشغيل.
  3. أصلح أي مشكلات مدرجة بالأحمر (أسماء أو منافذ أو متغيرات أو اعتماديات غير صالحة).
  4. نزّل docker-compose.yml وشغّل docker compose up -d.

مثال

الإدخال
Service app (build ., port 3000, NODE_ENV=production, depends on db) + PostgreSQL preset
الإخراج
services:
  app:
    build: .
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: production
    depends_on:
      - db
  db:
    image: postgres:16-alpine
    restart: unless-stopped
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: app
      POSTGRES_PASSWORD: change-me
      POSTGRES_DB: app
    volumes:
      - pgdata:/var/lib/postgresql/data
volumes:
  pgdata: {}

متى تستخدم مولّد Docker Compose

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

كيف يعمل مولّد Docker Compose

يُحوَّل النموذج إلى كائن وفق مواصفات Compose الحالية (دون مفتاح version: المهجور) ويُسلسَل إلى YAML بـ js-yaml. وتُقتبس ربوط المنافذ لأن القيم غير المقتبسة مثل 22:22 قد تقرؤها محلّلات YAML 1.1 كأعداد بالنظام الستيني. وتتحول أسطر البيئة KEY=value إلى تعيين، وتُعلَن تلقائيًا أي وحدة تخزين مصدرها اسم لا مسار (مثل pgdata:/var/lib/postgresql/data) تحت المفتاح volumes: في المستوى الأعلى. ويُتحقق من أسماء الخدمات وصيغ المنافذ وصياغة KEY=value وأهداف depends_on.

حالات الاستخدام الشائعة

  • تشغيل تطبيق مع PostgreSQL وRedis محليًا
  • مشاركة بيئة تطوير قابلة للتكرار مع الفريق
  • إنشاء ملف compose لأداة مستضافة ذاتيًا
  • تعلّم صياغة Compose بالأمثلة

ملاحظة أمنية

نشر منافذ قواعد البيانات (مثل 5432:5432) يكشفها على كل واجهات المضيف. أزل ربط المنفذ أو اربطه بـ 127.0.0.1 على الخوادم، واستخدم كلمات مرور قوية أو أسرارًا.

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

لماذا لا يوجد سطر version:؟

مفتاح version مهجور في مواصفات Compose التي يستخدمها Docker Compose v2؛ وتتجاهله الإصدارات الحالية وتطبع تحذيرًا.

هل ينتظر depends_on حتى تصبح قاعدة البيانات جاهزة؟

لا، إنه يتحكم بترتيب البدء فقط. أضف healthcheck مع condition: service_healthy، أو أعد محاولة الاتصال في تطبيقك.

ما الفرق بين وحدة تخزين مسمّاة وbind mount؟

تُدار وحدة التخزين المسمّاة (pgdata:/path) بواسطة Docker وتبقى بعد إعادة إنشاء الحاوية؛ أما bind mount (./data:/path) فيربط مجلدًا من جهازك.

استكشف المزيد من الفئات