لماذا Docker Compose؟
التطبيق الحقيقي غالبًا عدة خدمات: تطبيق + قاعدة بيانات + ذاكرة تخزين. تشغيلها يدويًا متعب. Docker Compose يشغّلها كلها بملف واحد وأمر واحد.
ملف docker-compose.yml
services:
app:
build: .
ports:
- "3000:3000"
depends_on:
- db
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: secret
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data # حفظ بيانات القاعدة خارج الحاوية
volumes:
pgdata: # named volume — يبقى حتى لو حُذفت الحاوية
شرح الملف
services= قائمة الحاويات.build: .= ابنِ من Dockerfile المحلّي.image:= استخدم صورة جاهزة.ports= ربط المنافذ.depends_on= رتّب التشغيل (db قبل app).environment= متغيّرات البيئة.volumes(على مستوى الخدمة) = ربط مجلّد؛volumes:(على مستوى الملف) = تعريف named volume تديره Docker.
الأوامر الأساسية
docker compose up # شغّل كل الخدمات
docker compose up -d # في الخلفية
docker compose ps # حالة الخدمات
docker compose down # أوقف واحذف كل شيء
docker compose down -v # + حذف الـ volumes أيضًا
docker compose logs # عرض السجلّات
docker compose logs -f # متابعة حيّة
الفائدة
أمر واحد docker compose up يشغّل تطبيقك بالكامل مع قاعدة بياناته — بيئة
تطوير كاملة في ثوانٍ، متطابقة لكل أفراد الفريق.
🎯 التالي: التثبيت وأوامر CLI بالتفصيل.