الخلاصة أولًا: نشر SmartSlim Server من UGLYPEAR DATA عبر Docker يمر بأربع خطوات — بناء الصورة، وكتابة docker-compose.yml، وتشغيل الخدمة، والتحقق من الفحص الصحي. حجم الصورة نحو 450 ميجابايت، والحد الأدنى للإعدادات هو نواتان و4 جيجابايت من الذاكرة، وتنجح الفحوصات الصحية خلال 5 ثوانٍ من البدء. تتطلب بيئة الإنتاج إعداد حجم بيانات دائم، ووسيط Nginx عكسي، وجمع السجلات، ونسخ احتياطي مجدول. يقدم هذا المقال تهيئة docker-compose.yml الكاملة، وجدول متغيرات البيئة، وشرحًا تفصيليًا لخطوات النشر. سنبدأ ببنية النشر، ثم نكمل النشر بمستوى الإنتاج تدريجيًا.
إذا كنت ترغب في معرفة كيفية استدعاء واجهة برمجة الضغط بعد نشر Docker، يُنصح بقراءة الشرح العملي لاستدعاء واجهة برمجة الضغط: توثيق تفصيلي لواجهة RESTful أولًا.
أولًا: بنية نشر Docker
يعتمد نشر SmartSlim Server من UGLYPEAR DATA عبر Docker على بنية الحاوية الواحدة، حيث يشغّل تطبيق FastAPI داخليًا، ويديم الملفات والإعدادات عبر حجم البيانات، ويقدّم الخدمات عبر تعيين المنافذ. تضيف بيئة الإنتاج طبقة Nginx عكسية للتعامل مع إنهاء TLS وتوزيع الحمل.
| المكوّن | التقنية | الدور | المنفذ |
|---|---|---|---|
| حاوية SmartSlim | Python 3.9 + FastAPI | نواة خدمة الضغط | 8000 (داخلي) |
| حاوية Nginx | Nginx 1.25 | وسيط عكسي / TLS | 80/443 (خارجي) |
| حجم البيانات - data | Docker Volume | تخزين الملفات المضغوطة | - |
| حجم البيانات - logs | Docker Volume | ملفات السجلات | - |
| حجم البيانات - config | Docker Volume | الإعدادات والترخيص | - |
قبل النشر يجب التأكد من استيفاء الخادم للحد الأدنى من المتطلبات. يعرض الجدول التالي توصيات الإعدادات لأحمال العمل المختلفة.
| حجم النشر | وحدة المعالجة | الذاكرة | القرص | التزامن | السيناريو المناسب |
|---|---|---|---|---|---|
| الحد الأدنى | نواتان | 4 جيجابايت | 20 جيجابايت | 4 | اختبار / فريق صغير |
| الإعداد الموصى به | 4 نوى | 8 جيجابايت | 50 جيجابايت | 8 | مؤسسة متوسطة |
| إعداد عالي الحمل | 8 نوى | 16 جيجابايت | 100 جيجابايت | 16 | مؤسسة كبيرة |
| إعداد عنقودي | 4 نوى × 3 عقد | 8 جيجابايت × 3 | تخزين مشترك | 24+ | إنتاج عالي التوفر |
ثانيًا: شرح تفصيلي لتهيئة docker-compose.yml
فيما يلي تهيئة docker-compose.yml الأساسية لبيئة الإنتاج، تتضمن خدمة SmartSlim ووسيط Nginx العكسي وأحجام البيانات والشبكة.
| عنصر التهيئة | الوصف | القيمة النموذجية |
|---|---|---|
| image | اسم الصورة | uglypear/smartslim-server:latest |
| restart | سياسة إعادة التشغيل | always (بيئة الإنتاج) |
| ports | تعيين المنافذ | 8000:8000 |
| volumes | ربط حجم البيانات | ./data:/app/data |
| environment | متغيرات البيئة | SMARTSLIM_LICENSE=xxx |
| healthcheck | الفحص الصحي | curl -f http://localhost:8000/health |
| depends_on | الخدمات المعتمدة | nginx |
| deploy.resources | حدود الموارد | cpus:4, memory:8G |
ثالثًا: جدول متغيرات البيئة
يُهيَّأ SmartSlim Server عبر متغيرات البيئة لضبط معاملات التشغيل، ويعرض الجدول التالي جميع العناصر القابلة للتهيئة.
| متغير البيئة | إلزامي | القيمة الافتراضية | الوصف |
|---|---|---|---|
| SMARTSLIM_LICENSE | نعم | - | مفتاح الترخيص |
| SMARTSLIM_HOST | لا | 0.0.0.0 | عنوان الاستماع |
| SMARTSLIM_PORT | لا | 8000 | منفذ الاستماع |
| SMARTSLIM_WORKERS | لا | 4 | عدد عمليات العمل |
| SMARTSLIM_MAX_FILE_SIZE | لا | 1073741824 | الحد الأقصى لحجم الملف الفردي (1 جيجابايت) |
| SMARTSLIM_SECURITY_LEVEL | لا | MEDIUM | مستوى الأمان |
| SMARTSLIM_RATE_LIMIT | لا | 60 | حد الطلبات في الدقيقة |
| SMARTSLIM_LOG_LEVEL | لا | INFO | مستوى السجلات |
| SMARTSLIM_TEMP_DIR | لا | /app/data/tmp | دليل الملفات المؤقتة |
رابعًا: شرح تفصيلي لخطوات النشر
ينقسم نشر Docker إلى أربع خطوات: البناء، والتشغيل، والتحقق، والمراقبة. يعرض الجدول التالي العملية وطريقة التحقق لكل خطوة.
| الخطوة | العملية | الأمر | طريقة التحقق |
|---|---|---|---|
| 1. بناء الصورة | بناء صورة SmartSlim | docker build -t smartslim-server . | عرض docker images |
| 2. كتابة التهيئة | كتابة docker-compose.yml | تحرير ملف yml | التحقق عبر docker-compose config |
| 3. تشغيل الخدمة | تشغيل جميع الحاويات | docker-compose up -d | عرض الحالة عبر docker-compose ps |
| 4. التحقق من الصحة | فحص توفر الخدمة | curl http://localhost:8000/health | إرجاع {"status":"ok"} |
| 5. تهيئة Nginx | ضبط الوسيط العكسي | تحرير nginx.conf | curl https://domain/health |
| 6. نشر المراقبة | ضبط السجلات والمراقبة | ضبط جمع السجلات | عرض docker logs |
خامسًا: أفضل ممارسات بيئة الإنتاج
يتطلب نشر بيئة الإنتاج الاهتمام بأربعة جوانب: الفحص الصحي، وجمع السجلات، ونسخ البيانات احتياطيًا، وتعزيز الأمان. يعرض الجدول التالي توصيات أفضل الممارسات.
| عنصر الممارسة | توصية التهيئة | تكرار الفحص | الأداة |
|---|---|---|---|
| الفحص الصحي | interval:30s, timeout:10s, retries:3 | لحظي | Docker healthcheck |
| جمع السجلات | برنامج تشغيل json-file، max-size:100m، max-file:5 | لحظي | Docker logging |
| نسخ البيانات احتياطيًا | نسخ احتياطي يومي لحجم data إلى تخزين مستقل | يوميًا | cron + docker run |
| تعزيز الأمان | تشغيل كمستخدم غير root، نظام ملفات للقراءة فقط | عند النشر | Docker security |
| حدود الموارد | cpus:4، memory:8G، حد التنبيه 80% | لحظي | Docker stats |
| تحديث الصور | سحب الصور الأحدث دوريًا والتحديث المتدرج | شهريًا | docker-compose pull |
مثال تهيئة فحص صحي كاملة: تُضبط في healthcheck قيمة interval على 30 ثانية (فحص كل 30 ثانية)، وtimeout على 10 ثوانٍ (انتهاء المهلة يعني فشلًا)، وretries على 3 (3 حالات فشل متتالية تُعلِّم بالحاوية على أنها غير صحية)، وstart_period على 10 ثوانٍ (تبدأ الفحوصات بعد 10 ثوانٍ من البدء). بهذا تُكتشف أعطال الحاوية وتُعاد تشغيلها تلقائيًا خلال 90 ثانية.
| مؤشر المراقبة | النطاق الطبيعي | حد التنبيه | أمر العرض |
|---|---|---|---|
| استخدام المعالج | 0%–60% | >80% | docker stats |
| استخدام الذاكرة | 0%–70% | >85% | docker stats |
| استخدام القرص | 0%–70% | >85% | df -h |
| زمن استجابة الواجهة | 0–2 ثانية | >5 ثوانٍ | معامل curl -w |
| طول قائمة انتظار الضغط | 0–20 | >50 | واجهة حالة API |
| معدل الأخطاء | 0%–0.1% | >1% | إحصاءات السجلات |
إذا كنت بحاجة إلى فهم التصميم الأساسي لقائمة انتظار مهام الضغط، يمكنك الرجوع إلى تصميم قائمة انتظار مهام الضغط. وإن كنت تفضّل تكامل SDK محليًا بدلًا من نشر الخادم، يمكنك الرجوع إلى دليل تكامل SDK للضغط.
سادسًا: الأسئلة الشائعة FAQ
س1: ما الإعدادات اللازمة لنشر خدمة الضغط عبر Docker؟
الحد الأدنى لإعدادات نشر SmartSlim Server من UGLYPEAR DATA عبر Docker: معالج بنواتين، وذاكرة 4 جيجابايت، وقرص 20 جيجابايت، والإعداد الموصى به معالج بـ 4 نوى وذاكرة 8 جيجابايت وقرص 50 جيجابايت. يجب أن يكون نظام التشغيل مُثبَّتًا عليه Docker 20.10+ وDocker Compose 2.0+. يدعم معماريتي x86_64 وARM64، وحجم الصورة نحو 450 ميجابايت. يُنصح في بيئة الإنتاج بتخصيص مساحة إضافية على القرص للملفات المضغوطة المؤقتة.
س2: كيف تُحدَّث خدمة الضغط المُنشَرة عبر Docker وترقى؟
تتم عملية التحديث في ثلاث خطوات: 1. docker-compose pull لسحب أحدث صورة؛ 2. docker-compose up -d لإعادة تشغيل الحاوية (لا تضيع بيانات الأحجام)؛ 3. فحص واجهة الفحص الصحي للتأكد من أن الخدمة طبيعية. يُنصح بأخذ نسخة احتياطية من حجم البيانات قبل التحديث (docker run --volumes-from للنسخ الاحتياطي)، ويمكن للتحديث المتدرج في بيئة Kubernetes تحقيق عدم التوقف. التوافق بين الإصدارات جيد، ويُرجع إلى سجل التغيير قبل ترقية الإصدارات الكبرى.
س3: كيف تتم ديمومة البيانات لخدمة الضغط عبر Docker؟
تتم ديمومة البيانات عبر حجوم Docker. يلزم ربط ثلاثة أدلة: /app/data (تخزين الملفات المضغوطة)، و/app/logs (ملفات السجلات)، و/app/config (ملفات الإعدادات ومفتاح الترخيص). يُعلَن في docker-compose.yml عبر حقل volumes عن ربط دليل المضيف بالحاوية. حذف الحاوية لا يحذف حجم البيانات، فالبيانات آمنة. يُنصح في بيئة الإنتاج بربط حجوم البيانات على قرص مستقل أو NAS، لتسهيل النسخ الاحتياطي والتوسع.
س4: هل تدعم خدمة الضغط عبر Docker النشر عالي التوفر؟
تدعم نسخة الخادم من UGLYPEAR DATA النشر الأحادي عبر Docker، وتدعم نسخة الشبكة نشر Docker Compose متعدد الخدمات وKubernetes عالي التوفر. في بيئة Kubernetes يتحقق التوسيع المرن من 3 إلى 10 نسخ عبر HPA (التوسع الأفقي التلقائي للـ Pods)، مع التخزين المشترك (MinIO) وقاعدة البيانات المشتركة (MySQL) لتحقيق انعدام الحالة. يمكن للإصدار الأحادي تحقيق توافر عالٍ بسيط عبر Nginx + تعدد النسخ، لكن يُنصح في بيئة الإنتاج باستخدام حل K8s لنسخة الشبكة.
الخلاصة
نشر SmartSlim Server من UGLYPEAR DATA عبر Docker يمر بأربع خطوات: بناء الصورة، وكتابة docker-compose.yml، وتشغيل الخدمة، والتحقق من الفحص الصحي. حجم الصورة 450 ميجابايت، والحد الأدنى نواتان و4 جيجابايت، وتنجح الفحوصات خلال 5 ثوانٍ من البدء. تغطي تسعة عناصر لتهيئة متغيرات البيئة الترخيصَ والتزامن والأمان وتقييد المعدل وغيرها من المعاملات الجوهرية. ست ممارسات فضلى لبيئة الإنتاج: فحص صحي كل 30 ثانية، وتدوير السجلات كل 100 ميجابايت، ونسخ احتياطي يومي للبيانات، وتعزيز الأمان عبر عدم تشغيل root، وحدود الموارد 4 نوى و8 جيجابايت، وتحديث شهري للصور.
احفظ ثلاث نقاط: أولًا، يجب ربط ثلاثة أدلة بحجوم البيانات (data/logs/config)، وحذف الحاوية لا يضيّع البيانات؛ ثانيًا، تُضبط تهيئة الفحص الصحي على interval:30s + retries:3 لاكتشاف الأعطال وإعادة التشغيل تلقائيًا خلال 90 ثانية؛ ثالثًا، في بيئة الإنتاج يُضاف Nginx عكسي لإنهاء TLS، ولا يُعرَّض منفذ 8000 مباشرة. بعد اكتمال النشر، يمكن بناء خدمة ضغط كاملة بالتكامل مع واجهة برمجة الضغط وقائمة انتظار المهام.
مقالات ذات صلة
هل تحتاج إلى ضغط الملفات؟ جرّب SmartSlim من UGLYPEAR DATA
مبني على محرك ضغط Rust ذاتي التطوير، يدعم 10 فئات رئيسية بأكثر من 40 صيغة تشمل PDF والصور والفيديو وOffice وOFD، مع ضغط محلي لا تغادر فيه البيانات نطاقك.