طريقة الاستخدام
- الصق أوامر docker run على اليسار. تعمل الأوامر متعددة الأسطر بشرطة مائلة عكسية زائدة؛ افصل عدة أوامر بأسطر جديدة أو فواصل منقوطة أو &&.
- يظهر ملف Compose على اليمين. يصبح كل أمر خدمة باسم --name، أو باسم الصورة إن لم يوجد.
- راجع الملاحظة الصفراء لأي شيء لم يُحوَّل، ثم انسخ compose.yaml أو نزّله وشغّل docker compose up -d.
شرح الخيارات
- الأعلام المدعومة
- -p، -v، --mount، -e، --env-file، --name، --restart، --network، -w، -u، -h، --entrypoint، -l، --add-host، --dns، --cap-add/drop، --device، -m، --cpus، --shm-size، --ulimit، --log-driver/--log-opt، --health-*، -i، -t، --privileged، --init، --read-only، والمزيد.
- المجلدات والشبكات المسماة
- تُعرَّف المجلدات المسماة (مثل pgdata:/data) ضمن volumes في المستوى الأعلى. تُعرَّف الشبكات المخصصة بـexternal true، أي استخدام شبكة موجودة مسبقًا. تصبح شبكتا host وnone بمثابة network_mode.
- المنافذ
- تُوضَع تعيينات المنافذ دائمًا بين علامتي اقتباس. تقرأ YAML 1.1 قيمًا مثل 22:22 كأرقام بالأساس 60، وتوصي وثائق Docker بكتابة المنافذ كنصوص.
- الأعلام المُتجاهَلة
- لا يوجد مكافئ لـ-d و--rm في Compose، فتُحذَفان. تُدرَج الأعلام غير المدعومة مثل --gpus في الملاحظة.
مثال
docker run -d --name web --restart unless-stopped -p 8080:80 \
-v ./html:/usr/share/nginx/html:ro -e TZ=Asia/Shanghai --memory 512m nginx:1.27
يصبح:
services:
web:
image: nginx:1.27
container_name: web
restart: unless-stopped
mem_limit: 512m
ports:
- "8080:80"
environment:
- TZ=Asia/Shanghai
volumes:
- ./html:/usr/share/nginx/html:ro
الأسئلة الشائعة
هل يحتاج الملف إلى سطر إصدار؟
لا. لم يعد Docker Compose الحالي (v2) يستخدم حقل version في المستوى الأعلى؛ وإن وُجد، يُتجاهل مع تحذير.
هل تُرفع كلمات المرور في متغيرات بيئتي؟
لا. يحدث التحليل والتحويل في متصفحك ولا يُرسَل شيء إلى خادم.
هل يتعامل مع المعطيات المُقتبَسة؟
نعم. تتبع علامات الاقتباس المفردة والمزدوجة وهروبات الشرطة المائلة العكسية قواعد الصدفة، لذا يحافظ -e "MSG=hello world" على القيمة كاملة.
الخصوصية
تعمل هذه الأداة بالكامل داخل متصفحك. تُعالَج ملفاتك ونصوصك على جهازك ولا تُرفع أبدًا إلى خوادمنا.