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

🐳 شرح Docker

Docker Compose Watch

الدرس 31 من 32· ⏱ 2 دقائق قراءة· 🗓 آخر تحديث: ٢١ يوليو ٢٠٢٦

المشكلة أثناء التطوير

بدون Watch، لديك خياران أثناء التطوير: أعِد بناء الصورة يدويًا بعد كل تعديل (docker compose up --build — بطيء ومزعج)، أو اربط الكود بـ bind mount وتتعامل مع صلاحيات الملفات وفروقات المسارات بين نظامك والحاوية. Compose Watch (متاحة من Compose v2.22+) يراقب ملفاتك محليًا ويحدّث الحاوية العاملة تلقائيًا فور الحفظ.

develop.watch في compose.yaml

يُعرَّف تحت مفتاح develop الجديد، بجانب build وservices العاديين:

services:
  web:
    build: .
    command: npm run dev
    develop:
      watch:
        - action: sync
          path: ./src
          target: /app/src
          ignore:
            - node_modules/
        - action: rebuild
          path: package.json

ثلاثة أفعال (actions)

الفعلماذا يفعلالاستخدام المناسب
syncينسخ الملف المعدَّل داخل الحاوية العاملة فورًا، دون إعادة تشغيلتطبيقات تدعم hot reload (Vite، nodemon، Next.js dev)
rebuildيبني صورة جديدة كاملة بـ BuildKit ويستبدل الحاويةتغيّر ملفّات الاعتماديات (package.json، requirements.txt)
sync+restartينسخ الملف ثم يعيد تشغيل الحاوية دون rebuild كاململفّات إعداد تُقرأ عند الإقلاع فقط (nginx.conf مثلًا)

التشغيل

docker compose watch          # وضع المراقبة فقط
docker compose up --watch     # تشغيل الخدمات + المراقبة معًا

docker compose up --watch يبني ويشغّل الخدمات ثم يفعّل المراقبة ويعرض السجلّات في نفس الوقت — هذا ما تستخدمه يوميًا.

💡 path نسبي لمجلّد المشروع، وignore تتبع نفس صياغة .dockerignore. قواعد .dockerignore الموجودة أصلًا تُطبَّق تلقائيًا أيضًا، بلا حاجة لتكرارها.

متطلّبات على صورتك

  • تعمل فقط مع خدمات مبنية محليًا (build:) — لا تراقب خدمات image: الجاهزة من registry.
  • الصورة تحتاج أوامر stat وmkdir وrmdir متاحة (موجودة افتراضيًا في أغلب صور Linux).
  • المستخدم الذي تعمل به الحاوية يحتاج صلاحية كتابة على مسار target — استخدم COPY --chown في الـ Dockerfile إن غيّرت USER.

⚠️ Watch لا يدعم أنماط glob في path — استخدم مسار مجلّد أو ملف محدّد. ولأنه ليس بديلًا كاملًا عن volumes: في كل الحالات: bind mount ما زال أنسب لو أردت تعديل ملفّات ثنائية كبيرة لا تحتاج إعادة تشغيل الأداة نفسها.

🎯 التالي: Docker Scout: فحص ثغرات الصور

شرح Docker Compose Watch — Docker بالعربي
Docker Compose WatchDocker بالعربي · The Code Fix

📚 لمزيد من التعمّق في Docker، راجِع التوثيق الرسمي لـ Docker.

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