0Pricing
Go Academy · درس

‏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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بناء Docker متعدد المراحل لـ Go
  2. إعدادات البيئة والأسرار
  3. ‏Docker Compose للتطوير المحلي
  4. فحوصات الصحة والضبط للإنتاج
← العودة إلى Go Academy