الدرس 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.