العودة إلى الدورة

الدرس 18: تشريح ملف docker-compose.yml

Docker من الصفر إلى الاحتراف: الدورة الشاملة لتغليف التطبيقات (Containerization) للمبتدئين

الدرس 18: تشريح ملف docker-compose.yml

لنقم بإنشاء ملف compose.yml وظيفي لتطبيق بسيط يتكون من خدمة ويب (باستخدام Dockerfile مخصص) وقاعدة بيانات PostgreSQL.

إعداد المشروع

أنشئ هيكل دليل:

my-app-stack/ ├── Dockerfile (لتطبيق الويب) ├── server.py (كود التطبيق الخاص بك) └── docker-compose.yml

محتوى docker-compose.yml

yaml version: '3.8'

services: web: # 1. بناء الصورة باستخدام Dockerfile المحلي build: . # 2. تعيين منفذ المضيف 80 إلى منفذ الحاوية 5000 ports: - "80:5000" # 3. تعريف متغيرات البيئة لتطبيق الويب environment: DB_HOST: db DB_PORT: 5432 # 4. تحميل الدليل الحالي لسرعة التطوير volumes: - .:/code

db: # 1. سحب صورة Postgres الرسمية image: postgres:15-alpine # 2. تعريف متغيرات البيئة المطلوبة بواسطة Postgres environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: mydb # 3. استخدام مجلد مُسمى للبيانات الدائمة volumes: - postgres_data:/var/lib/postgresql/data # 4. سياسة إعادة التشغيل: حاول دائماً إعادة التشغيل إذا فشل restart: always

volumes: postgres_data: # تعريف المجلد الدائم

بشكل افتراضي، ينشئ compose شبكة تسمى 'my-app-stack_default'

ويتم ربط جميع الخدمات بها.

النقاط الرئيسية:

  • تستخدم خدمة web الأمر build: . للعثور على ملف Dockerfile محلياً.
  • تستخدم خدمة db المفتاح image: للسحب من Docker Hub.
  • تشير الخدمات إلى بعضها البعض باسمها (db هو اسم المضيف لاتصال قاعدة البيانات من خدمة web).
  • يتم تعريف المجلد postgres_data عالمياً ثم يتم تحميله في خدمة db.