تخطَّ إلى المحتوى

🚀 شرح DevOps و CI/CD

Docker Compose للبيئات

الدرس 9 من 25· ⏱ 1 دقائق قراءة

ما هو Docker Compose؟

Docker Compose أداة لتعريف وتشغيل تطبيقات متعددة الحاويات باستخدام ملف YAML واحد.

docker-compose.yml أساسي

version: "3.8"

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
    environment:
      - NODE_ENV=development

تطبيق كامل مع قاعدة بيانات

version: "3.8"

services:
  app:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
    environment:
      - DATABASE_URL=postgres://user:pass@db:5432/myapp

  db:
    image: postgres:15
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: myapp
    volumes:
      - pgdata:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"

volumes:
  pgdata:

أوامر Docker Compose الأساسية

# تشغيل جميع الخدمات
docker compose up -d

# مشاهدة السجلات
docker compose logs -f

# إيقاف الخدمات
docker compose down

# بناء الخدمات من جديد
docker compose build

# عرض الحالة
docker compose ps

Compose لبيئة اختبار

version: "3.8"

services:
  app-test:
    build:
      context: .
      target: test
    environment:
      - DATABASE_URL=postgres://user:pass@db-test:5432/testdb
      - NODE_ENV=test
    depends_on:
      - db-test

  db-test:
    image: postgres:15
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: testdb

⚠️ في بيئة الاختبار، استخدم أمراً منفصلاً للتأكد من أن قاعدة البيانات جاهزة قبل تشغيل الاختبارات: docker compose up -d db-test && docker compose run app-test.

متغيرات البيئة (Env File)

services:
  app:
    env_file:
      - .env.development
# .env.development
NODE_ENV=development
PORT=3000
DEBUG=true

دمج Compose مع CI

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: docker compose -f docker-compose.test.yml up --abort-on-container-exit

🎯 التالي: بناء متعدد المراحل (Multi-stage Builds)

شرح Docker Compose للبيئات — DevOps و CI/CD بالعربي
Docker Compose للبيئاتDevOps و CI/CD بالعربي · The Code Fix

هل كان هذا الدرس مفيدًا؟