UGLYPEAR AI تُكمل ترقية أعمالها: ضغط المستندات عالي الأداء × أساس هندسة بيانات RAGتعرّف على الأعمال الجديدة →

نشر خدمة الضغط عبر Docker: تجربة عملية مع SmartSlim Server

الخلاصة أولًا: نشر 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 وتوزيع الحمل.

المكوّنالتقنيةالدورالمنفذ
حاوية SmartSlimPython 3.9 + FastAPIنواة خدمة الضغط8000 (داخلي)
حاوية NginxNginx 1.25وسيط عكسي / TLS80/443 (خارجي)
حجم البيانات - dataDocker Volumeتخزين الملفات المضغوطة-
حجم البيانات - logsDocker Volumeملفات السجلات-
حجم البيانات - configDocker 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. بناء الصورةبناء صورة SmartSlimdocker 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.confcurl 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، مع ضغط محلي لا تغادر فيه البيانات نطاقك.