العودة إلى المدونة

تشغيل Docker وDocker Compose في بيئة الإنتاج على VPS: قائمة تحقق 2026

فريق تحرير IM Host3 أكتوبر 20264 دقائق قراءة
تشغيل Docker وDocker Compose في بيئة الإنتاج على VPS: قائمة تحقق 2026

Docker Compose هو أسرع طريق من "يعمل على جهازي" إلى "يعمل على السيرفر". لكنه أيضًا يسهّل نشر التطبيق بطريقة تعمل في اليوم الأول ثم تتعطل بهدوء في اليوم الثلاثين: قرص ممتلئ، أو حاوية لم تُعِد التشغيل، أو منفذ قاعدة بيانات مفتوح على الإنترنت. تغطي قائمة التحقق هذه أساسيات الإنتاج لتشغيل Docker وCompose على سيرفر VPS واحد، وهو الإعداد الذي تستخدمه فعليًا معظم الفرق الصغيرة ومشاريع SaaS.

1. اختر سيرفر VPS المناسب

الحاويات لا تحتاج عتادًا خاصًا، لكنها تجعل تشغيل خدمات كثيرة على جهاز واحد أمرًا سهلًا جدًا. احسب الحجم على أساس مجموع الحاويات في وقت الذروة لا المتوسط. لتطبيق ويب نموذجي مع قاعدة بيانات وكاش وWorker في الخلفية، تُعد 4 vCPU و8 جيجابايت رام بداية مريحة. فضّل تخزين NVMe لأن طبقات الصور والسجلات وقواعد البيانات كلها تكتب على القرص. سيرفر Linux VPS بصلاحيات root كاملة يعمل جيدًا، أما Cloud VPS بمعالج وذاكرة مخصصين فهو الأنسب إذا كان البناء وقاعدة البيانات يعملان على الجهاز نفسه.

2. ثبّت Docker بالطريقة المدعومة

ثبّت Docker Engine وإضافة Compose من المستودع الرسمي لـ Docker بدلًا من حزمة قديمة من التوزيعة، لتحصل على أحدث الإصلاحات الأمنية. ثم أضف مستخدم النشر إلى مجموعة docker، وتذكّر أن هذه المجموعة تعادل فعليًا صلاحيات root، فلا تضف إليها إلا المستخدمين الموثوقين.

3. اكتب ملف Compose يصمد بعد إعادة التشغيل

services:
  app:
    image: ghcr.io/yourorg/app:1.4.2
    restart: unless-stopped
    env_file: .env
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "127.0.0.1:3000:3000"
    logging:
      driver: json-file
      options:
        max-size: "10m"
        max-file: "3"

  db:
    image: postgres:16
    restart: unless-stopped
    environment:
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      retries: 5
    volumes:
      - db_data:/var/lib/postgresql/data
    secrets:
      - db_password

volumes:
  db_data:

secrets:
  db_password:
    file: ./secrets/db_password.txt

التفاصيل المهمة:

  • restart: unless-stopped يعيد الخدمات للعمل بعد أي تعطل أو إعادة تشغيل.

  • تثبيت إصدار الصورة مثل 1.4.2 بدلًا من latest، حتى لا يفاجئك أي نشر جديد بإصدار مختلف.

  • فحوصات الصحة مع depends_on: condition: service_healthy ليتنظر التطبيق جاهزية قاعدة البيانات.

  • Volumes مسماة لكل ما يجب أن يبقى، فنظام ملفات الحاوية مؤقت.

  • تدوير السجلات، لأن مشغّل السجلات الافتراضي يظل يكبر حتى يمتلئ القرص.

4. لا تنشر منافذ لا تحتاجها

هذا هو الخطأ الأكثر شيوعًا في الإنتاج. يكتب Docker قواعد الجدار الناري الخاصة به، والمنفذ المنشور مثل 5432:5432 قد يكون متاحًا من الإنترنت حتى لو بدا أن UFW يحجبه. انشر فقط ما يحتاجه الـ Reverse Proxy واربطه بـ 127.0.0.1، ودع قواعد البيانات والكاش تتواصل عبر الشبكة الداخلية لـ Compose دون أي منفذ منشور.

5. ضع Reverse Proxy في الواجهة

شغّل Caddy أو Nginx أو Traefik كخدمة وحيدة تستمع على المنفذين 80 و443. فهو ينهي اتصال TLS ويجدد الشهادات ويوجّه الطلبات إلى حاوياتك، ويمنحك مكانًا واحدًا لإضافة تحديد معدل الطلبات والضغط وترويسات الأمان.

6. أبعد الأسرار عن الصور وعن Git

استخدم ملف .env غير مرفوع على نظام التحكم بالإصدارات، أو أسرار Compose لكلمات المرور ومفاتيح الـ API. لا تضع بيانات الاعتماد داخل الصورة أبدًا، فأي شخص يستطيع سحب الصورة يستطيع قراءتها.

7. انسخ الـ Volumes احتياطيًا لا الحاويات

يمكن إعادة إنشاء الحاويات من الصور في ثوانٍ، أما ما لا يمكن إعادة إنشائه فهو البيانات داخل الـ Volumes. انسخ قواعد البيانات بأدواتها الأصلية مثل pg_dump أو mysqldump بدلًا من نسخ ملفات البيانات أثناء عملها، واحفظ النسخ خارج السيرفر. على Cloud VPS من IM HOST تعمل نسخة احتياطية تلقائية للسيرفر كاملًا كل 72 ساعة دون تكلفة إضافية، وهي شبكة أمان مفيدة إلى جانب نسخ قاعدة البيانات الخاصة بك.

8. خطط لمساحة القرص

الصور القديمة والحاويات المتوقفة وكاش البناء تتراكم. جدول تنفيذ docker system prune بحذر بعد التأكد من أنه لن يحذف شيئًا تعتمد عليه، وراقب المساحة الحرة مع تنبيه قبل الوصول إلى 90 بالمئة بوقت كافٍ.

9. حدّث بشكل مقصود

  • حدّث نظام التشغيل باستمرار وأعد التشغيل عند تحديث النواة.

  • أعد بناء صورك لتحصل على إصلاحات الأمان في الصور الأساسية.

  • انشر الإصدارات الجديدة بتغيير رقم الإصدار ثم docker compose pull وdocker compose up -d، واحتفظ بالإصدار السابق جاهزًا للتراجع.

10. راقب ما يشعر به المستخدم

الحاوية العاملة لا تعني بالضرورة أن التطبيق يعمل. أضف فحص تشغيل خارجيًا على رابط حقيقي، وتنبيهًا عند إعادة تشغيل الحاويات، وراقب أزمنة الاستجابة. الأدوات البسيطة تكفي، المهم أن يصل التنبيه إلى شخص ما.

أين تشغّله؟

تأتي خطط Linux VPS وCloud VPS من IM HOST بصلاحيات root كاملة وتخزين NVMe وعنوان IPv4 مخصص ودعم من مهندسين على مدار الساعة، في الولايات المتحدة والمملكة المتحدة وبولندا وألمانيا ومصر. قارن خطط Linux VPS وCloud VPS لتختار الحجم المناسب لنظامك.

المزيد من مدونتنا

اكتشف المزيد من الأدلة العملية ورؤى الخدمات من فريق IM Host.

عرض كل المقالات