النشر14 دقيقة قراءة

Docker Compose في الإنتاج: قائمة التحقق من 10 نقاط

‏ملف ‎docker-compose‎.yml‎ الذي يعمل على حاسوبك لن ينجو من الإنتاج كما هو. إعادة التشغيل بعد الإقلاع، وحدود الموارد، والأسرار، وتدوير السجلات: كلها إعدادات غائبة افتراضيًا وتسبب أعطالًا صامتة. تجمع قائمة التحقق هذه المعايير العشرة التي يجب فحصها قبل نشر أول حزمة ‎Compose‎ على خادم ‎VPS‎.

لماذا قائمة تحقق قبل الإنتاج

‏صُمِّم ‎Docker Compose‎ للتطوير: قيمه الافتراضية تفضّل البساطة على المتانة. في التطوير لا تُشكّل هذه الإعدادات أي مشكلة. في الإنتاج تتحول إلى حوادث: قرص ممتلئ الساعة الثالثة فجرًا، قاعدة بيانات ضائعة بعد docker compose down. البشرى: تقوية حزمة ‎Compose‎ لا تتطلب إعادة كتابة.

النقاط العشر بلمحة

  • restart: unless-stopped — تُعاد الحاوية بعد إقلاع المضيف أو انهيارها
  • healthcheck — يكتشف ‎Docker‎ حاوية عالقة ويتيح إعادة التشغيل التدريجي
  • حدود المعالج والذاكرة — خدمة جامحة لا يمكنها خنق جيرانها
  • الأسرار عبر ‎.env‎ أو ‎Docker secrets‎ — لا كلمة مرور بنص صريح
  • وحدات تخزين مُسمّاة — تنجو البيانات من docker compose down
  • تدوير السجلاتmax-size وmax-file يمنعان امتلاء القرص
  • عزل الشبكة — افصل frontend وbackend
  • ربط المنافذ127.0.0.1:PORT خلف وكيل عكسي، لا 0.0.0.0
  • وسوم صور مثبّتة — نسخة أو بصمة، لا latest
  • depends_on مع شرطservice_healthy يتجنب سباقات الإقلاع

المتطلبات المسبقة

‏تأكد من امتلاك خادم ‎VPS‎ مثبّت عليه ‎Docker Engine‎ وإضافة ‎Compose v2‎. تحقّق من الإصدار عبر docker compose version. ضع ملفك في مجلد مشروع مخصص مع ملف ‎.env‎ بجانبه وأذونات مقيّدة. خطّط لوكيل عكسي في المقدمة. احتفظ بنسخة من ملف ‎Compose‎ تحت إدارة إصدارات.

الخطوات العشر المفصّلة

01

1. سياسة إعادة التشغيل

‏أضف restart: unless-stopped إلى كل خدمة.

02

2. الفحص الصحي

‏أعلن كتلة healthcheck: مع test وinterval وtimeout وretries.

03

3. حدود الموارد

‏تحت deploy.resources.limits، حدّد cpus وmemory.

04

4. الأسرار خارج الملف

‏لا تضع أبدًا كلمة مرور بنص صريح في YAML. أرجع إليها عبر env_file أو secrets:.

05

5. وحدات التخزين المُسمّاة

‏أعلن بياناتك في وحدات تخزين مُسمّاة بمشغّل صريح.

06

6. تدوير السجلات

‏أضف logging: مع driver: json-file وخيارَي max-size وmax-file.

07

7. عزل الشبكة

‏أنشئ شبكات مُسمّاة frontend وbackend وأرفق كل خدمة فقط بما تحتاجه.

08

8. ربط المنافذ

‏انشر على 127.0.0.1:8080:8080 لا 8080:8080 خلف وكيل عكسي.

09

9. وسوم الصور المثبّتة

‏استبدل latest بنسخة محددة أو بصمة.

10

10. ترتيب الإقلاع

‏استخدم depends_on مع condition: service_healthy.

إعدادات التطوير مقابل الإنتاج

الإعدادافتراضي التطويرموصى به للإنتاج
restartnounless-stopped
healthcheckغائبمُعرَّف بفترة ومحاولات
الذاكرةبلا حدحد محدد
الأسرارنص صريح ممكن‎.env أو Docker secrets
وحدات التخزينمجهولةمُسمّاة
السجلاتبلا حدmax-size + max-file
الشبكةالجسر الافتراضيfrontend / backend
المنافذ0.0.0.0127.0.0.1 خلف وكيل
الصورةlatestنسخة أو بصمة
depends_onالإطلاق فقطcondition: service_healthy

‏اختبر دائمًا حزمتك المقوّاة محليًا: docker compose config للتحقق من البنية، ثم محاكاة الإقلاع بـdocker compose restart.

استكشاف الأخطاء

‏حاوية عالقة في starting تعني فشل الفحص الصحي. خدمة تُعاد في حلقة تخفي خطأ إقلاع — راجع docker compose logs -f service. منفذ يظل قابلاً للوصول رغم 127.0.0.1 يشير لجدار حماية مفقود.

‎CVE-2026-17106 (CopyEscape): تحديث Docker Engine فورًا

CVE-2026-17106، الملقّب بـCopyEscape، هو حالة تسابق زمني في docker cp أُفصح عنها في 10 أغسطس 2026. حاوية غير موثوقة تنتج أرشيف  tar‎ مشوّهًا يتبع رابطًا رمزيًا خارج الوجهة، مما يؤدي إلى كتابة ملف عشوائي على المضيف. التصحيح في Docker Engine ≥ 29.7.2 وDocker Desktop ≥ 4.86.0.

إدارة أسرار Docker: تدوير دون توقّف

‎متغيرات البيئة بنص صريح في ملف ‎Compose‎ تظهر في docker inspect. آلية secrets: في ‎Docker‎ تحمِّل الأسرار كملفات تحت /run/secrets/. للتدوير دون توقّف: أنشئ db_password_v2 بجانب v1، حدّث الخدمة، أعد النشر، احذف v1 بعد التحقّق.

نسخ الأحجام احتياطيًا دون تلف

‎نسخ ملفات حجم ‎PostgreSQL‎ أو ‎MySQL‎ أثناء تشغيلها بـrsync أو tar ينتج نسخة تالفة. القاعدة: دائمًا pg_dump أو mysqldump قبل لقطة الحجم. أدوات مثل ‎Restic‎ و‎Offen Docker Backup‎ تُنظّم هذا تلقائيًا.

الخاتمة

‎تحوّل هذه الإعدادات العشرة ملف ‎Compose‎ تطويريًا إلى حزمة إنتاجية. لا يتطلّب أي منها أداةً إضافية.

انشر حزمة Compose الخاصة بك في الإنتاج

‏يمنحك خادم ‎VPS ServOrbit‎ صلاحية الجذر والذاكرة والتحكم بالشبكة اللازمة لتشغيل حزمة ‎Docker Compose‎ مقوّاة.

بحاجة إلى مساعدة؟

تصفّح مركز المساعدة والأسئلة الشائعة، أو تواصل مع فريقنا — معاودة اتصال أو WhatsApp أو بريد إلكتروني. الدعم بـ العربية والفرنسية والإنجليزية.