Docker Compose للتطوير المحلي
ربط خدمة Go مع PostgreSQL وRedis
Docker Compose للتطوير المحلي درس مجاني في Go Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Go Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Go Academy 4 دروس في المجموع.
لماذا Docker Compose؟
ينسّق Docker Compose عدة حاويات (التطبيق وقاعدة البيانات وذاكرة التخزين المؤقت ووسيط الرسائل) للتطوير المحلي، ويعيد إنشاء بيئة شبيهة بالإنتاج دون إعداد الخدمات يدويًا.
بنية docker-compose.yml
حدّد الخدمات والشبكات ووحدات التخزين في ملف YAML:
services:
app:
build: .
ports: ["8080:8080"]
environment:
- DATABASE_URL=postgres://app:pass@db/mydb
depends_on: [db]
db:
image: postgres:15
environment:
POSTGRES_USER: app
POSTGRES_PASSWORD: pass
POSTGRES_DB: mydb
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:إعادة التحميل المباشر باستخدام Air
استخدم github.com/air-verse/air لإعادة التحميل المباشر أثناء التطوير. ثبّت المصدر داخل الحاوية وشغّل air بدلًا من الملف الثنائي:
app:
volumes:
- .:/app
command: airفحوصات الصحة
حدّد فحوصات الصحة لكي ينتظر depends_on جاهزية قاعدة البيانات الفعلية، لا مجرد بدء تشغيلها:
db:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U app"]
interval: 5s
timeout: 3s
retries: 5
app:
depends_on:
db:
condition: service_healthyتجاوزات البيئة
استخدم docker-compose.override.yml (الذي يُدمج تلقائيًا) للإعدادات المحلية فقط، مع إبقاء الملف الأساسي نظيفًا لأجل CI:
# docker-compose.override.yml
services:
app:
volumes: [".:/app"] # source mount for live reloadالشبكات المسماة
ضع الخدمات على شبكة مخصصة مشتركة لاكتشاف الخدمات عبر DNS باستخدام اسم الخدمة:
networks:
backend:
driver: bridge
services:
app:
networks: [backend]
db:
networks: [backend]ملفات البيئة
استخدم المفتاح env_file لتحميل ملفات .env إلى الحاوية، مع إبقاء الأسرار خارج ملف YAML:
app:
env_file: .env.localتشغيل الأوامر
أوامر Compose الشائعة:
docker compose up -d # start in background
docker compose down -v # stop and remove volumes
docker compose logs -f app # stream app logs
docker compose exec db psql -U app mydb # run in containerإدخال البيانات الأولية إلى قاعدة البيانات
ثبّت ملفات SQL الخاصة بالبيانات الأولية داخل المجلد /docker-entrypoint-initdb.d في صورة postgres — إذ تُشغّل عند إنشاء الحاوية لأول مرة:
db:
volumes:
- ./migrations:/docker-entrypoint-initdb.dالملفات التعريفية
استخدم الملفات التعريفية في Compose لتشغيل الخدمات الاختيارية (مثل حزمة المراقبة) عند الحاجة فقط:
services:
grafana:
profiles: ["monitoring"]Compose في CI
شغّل اختبارات التكامل في CI باستخدام Compose ضد خدمات حقيقية. يدعم GitHub Actions ميزة Docker Compose أصلًا؛ استخدم فحوصات الصحة للانتظار حتى تصبح الخدمات جاهزة.
تحقق سريع
كيف تضمن أن تنتظر حاوية التطبيق جاهزية قاعدة البيانات في Docker Compose؟
مراجعة: Docker Compose
النقاط الأساسية:
- يعرّف docker-compose.yml جميع الخدمات والشبكات ووحدات التخزين
- استخدم depends_on مع healthcheck لضمان جاهزية الخدمات
- استخدم ملفات التجاوز لإعدادات التطوير المحلي، وenv_file للأسرار
- استخدم Air لإعادة التحميل المباشر، وثبّت المصدر كوحدة تخزين
الأسئلة الشائعة
هل درس «Docker Compose للتطوير المحلي» مجاني؟
نعم — نص درس «Docker Compose للتطوير المحلي» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Go Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Go Academy 4 دروس في المجموع.
ماذا ستتعلم في «Docker Compose للتطوير المحلي»؟
ربط خدمة Go مع PostgreSQL وRedis تتمرن على Go Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Go Academy؟
لا تُشترط خبرة سابقة. Go Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «Docker Compose للتطوير المحلي»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Go Academy هذا؟
نعم. كل درس في Go Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بناء Docker متعدد المراحل لـ Go
- إعدادات البيئة والأسرار
- Docker Compose للتطوير المحلي
- فحوصات الصحة والضبط للإنتاج