Docker وDevOps

تطبيق يعمل بالطريقة نفسها في كل بيئة، ونشر بلا خطوات يدوية: هكذا ننشر منتجاتنا.

نبني بيئات قابلة للتكرار ونشراً آلياً باستخدام Docker وGitHub Actions وCoolify. يعمل Hippotenus وLogaritim وpepechura.com بهذه الطريقة.

آخر تحديث:

ما بنيناه بهذه التقنية

جميعها منشورة؛ صفحات المتاجر والتفاصيل في صفحة المنتجات.

Hippotenus

منصة للمؤسسات التعليمية

الواجهة البرمجية وتطبيق الويب والموقع التعريفي صور Docker منفصلة، تُبنى في GitHub Actions وتُنشر في بيئتي staging وproduction عبر Coolify.

اعرض المنتج

Logaritim

بنك أسئلة وإنشاء اختبارات

الواجهة الخلفية FastAPI والواجهة الأمامية صورتا Docker منفصلتان؛ بعد نجاح الاختبارات تُبنى الصورة وتُنشر عبر Coolify.

اعرض المنتج

ما الذي يحله Docker

يحزم Docker التطبيق مع كل ما يحتاجه للعمل (حزم نظام التشغيل وبيئة التشغيل والاعتماديات) في صورة واحدة. تعمل الصورة نفسها بالطريقة نفسها على حاسوب المطوّر وفي بيئة الاختبار وفي بيئة الإنتاج؛ فلا يُثبَّت شيء على الخادم يدوياً، وتختفي مشكلة «كان يعمل على جهازي». أما جزء DevOps فهو جعل هذه الصورة تُختبر وتُبنى وتُنشر تلقائياً لحظة رفع الكود.

حيث يناسب Docker

  • للتطبيق عدة أجزاء، مثل واجهة برمجية وقاعدة بيانات وعامل يعمل في الخلفية
  • تريد إعداد عدة بيئات، مثل staging وproduction، بالطريقة نفسها
  • يجب أن يعمل التطبيق على خادمك الخاص أو على خادم في تركيا
  • تريد إبقاء خيار الانتقال من منصة إلى خادمك الخاص، أو العكس، مفتوحاً

حيث لا نرى Docker ضرورياً

  • التطبيق موقع Next.js تستطيع منصة مثل Vercel نشره مباشرة: نشغّل Atölye Tasarım دون Docker، عبر مسار النشر الخاص بالمنصة
  • الواجهة الخلفية لتطبيق الجوال بالكامل على خدمة مُدارة مثل Firebase: لا يوجد في SoruVerse خادم يحتاج إلى إدارة
  • لا أحد سيحدّث الخادم ويراقبه، ولا توجد خطة صيانة: هنا تكون المنصة المُدارة الخيار الأصح

كيف يصل الكود إلى بيئة الإنتاج

يتبع pepechura.com وHippotenus وLogaritim المسار نفسه. في Hippotenus يذهب الفرع الرئيسي إلى production وفرع التطوير إلى بيئة staging. وللتطوير المحلي يشغّل ملف docker-compose واحد قاعدة PostgreSQL وRedis والواجهة البرمجية وتطبيق الويب والموقع التعريفي معاً، وتنتظر الواجهة البرمجية حتى تصبح قاعدة البيانات جاهزة.

الخطوةما يحدثالسبب
الاختبارتعمل الاختبارات عند وصول الكود إلى الفرع الرئيسي؛ وفي pepechura.com وLogaritim يتوقف النشر على نجاحهاكي لا تتحول نسخة معطوبة إلى صورة
البناءتُبنى صورة Docker في GitHub Actions لا على الخادمكي لا ينشغل معالج خادم الإنتاج بالبناء
السجلتوسَم الصورة بمعرّف الـ commit وتُرفع إلى GitHub Container Registryيبقى واضحاً دائماً أي كود يعمل في الإنتاج
النشريسحب Coolify الصورة الجديدة ويستبدل الحاوية؛ وفي Hippotenus تُطبَّق عمليات الترحيل عند تشغيل الحاوية الجديدةإذا فشل الترحيل لا تعمل النسخة الجديدة وتستمر القديمة في العمل
التحققفي pepechura.com ينتظر مسار العمل حتى تصبح الحاوية الجديدة منشورةلا يمر نشر فاشل دون أن يُلاحظ؛ يفشل مسار العمل

خادمك الخاص أم منصة

يعمل ملف Dockerfile نفسه على منصة مثل Railway (PaaS) وعلى خادمك الخاص. ما زال إعداد Railway الخاص بـ Hippotenus موجوداً في مستودعه؛ أما اليوم فيعمل Hippotenus وLogaritim وpepechura.com على خادمنا الخاص عبر Coolify. وCoolify لوحة نشر مفتوحة المصدر تُثبَّت على خادمك: تسحب الصورة وتدير شهادات HTTPS وفحوص السلامة.

منصة (مثل Railway)خادمك الخاص (مع Coolify)
الإعدادسريع؛ المنصة تدير الخادمإعداد الخادم وتحديثه مسؤوليتك أو مسؤولية فريق الصيانة
مكان البياناتالمناطق التي تتيحها المنصةالخادم الذي تختاره، في تركيا مثلاً
التكلفةتتغير مع الاستخدامسعر خادم ثابت في الغالب
صورة التطبيقملف Dockerfile نفسهملف Dockerfile نفسه
مثالناالبيئة السابقة لـ HippotenusHippotenus وLogaritim وpepechura.com

قواعد البيانات والمهام الخلفية والنسخ الاحتياطي والمراقبة

في أحد مشاريع العملاء يُعدّ ملف Docker Compose واحد النظام كله: قاعدة PostgreSQL دون أي منفذ مفتوح للخارج، وخدمة تعمل مرة واحدة لتحديث قاعدة البيانات قبل بدء التطبيق، والتطبيق نفسه، وعاملاً في الخلفية يعمل من الصورة نفسها، وCaddy الذي يحصل على شهادة HTTPS ويجددها تلقائياً. ويأخذ سكربت نسخة احتياطية من قاعدة البيانات والملفات المرفوعة. وفي مشروع عميل آخر تعمل خدمات ‎.NET وقاعدة PostgreSQL مع إضافة PostGIS داخل Docker، ويراقب Elastic Stack سجلات الحاويات ومقاييس الخادم ونقاط فحص السلامة. أما في Hippotenus فتُنسخ قواعد البيانات احتياطياً كل ليلة، وتُشفَّر النسخ وتُنقل إلى تخزين منفصل في تركيا، وقد جُرّبت الاستعادة.

GitHub Actions

تشغيل الاختبارات وبناء الصور وإطلاق النشر. نستخدمه لـ pepechura.com وHippotenus وLogaritim.

GitHub Container Registry

حيث تُحفظ الصور المبنية بمعرّف الـ commit. نستخدمه في المشاريع الثلاثة نفسها.

Coolify

لوحة النشر مفتوحة المصدر التي تشغّل الصور على خادمنا. يعمل عليها pepechura.com وHippotenus وLogaritim.

Caddy وNginx

الخادم الأمامي: HTTPS والضغط وحدود الرفع. نستخدمهما للواجهة الأمامية لـ Logaritim وفي مشاريع العملاء.

restic

نسخ احتياطية مشفرة ومتعددة الإصدارات. نستخدمه لنسخ قواعد بيانات Hippotenus وLogaritim.

Elastic Stack

جمع السجلات ومقاييس الخادم وفحوص التوفر. نستخدمه في أحد مشاريع العملاء.

كيف يسير مشروع Docker وDevOps

  1. 01

    مكالمة تعريفية مجانية

    30 دقيقة

    نتحدث عن مكان تشغيل التطبيق وطريقته اليوم، وكيف يتم النشر، وما الذي يسبب لك أكبر قدر من المتاعب.

  2. 02

    نطاق مكتوب وعرض سعر

    نكتب البيئات ومسار النشر واحتياجات النسخ الاحتياطي والمراقبة ومعايير القبول.

  3. 03

    إصدارات أسبوعية

    كل أسبوع نسلّم جزءاً عاملاً: أولاً بيئة التطوير، ثم مسار الاختبار والبناء، ثم staging.

  4. 04

    الاختبار والانتقال

    يختبر مهندس ضمان جودة أول النسخة على staging قبل انتقالها إلى الإنتاج. وعند تغيير الاستضافة نُبقي البيئة القديمة جاهزة للرجوع إليها لفترة.

  5. 05

    الثلاثون يوماً بعد الإطلاق

    30 يوماً

    نصلح مجاناً الأخطاء التي تظهر في هذه الفترة، وبعدها يمكنك المتابعة بصيانة شهرية.

ننشر المدد ونطاقات الميزانية في صفحات الخدمات والأسعار، وكل ما في هذه الصفحة يتبع الأرقام نفسها.

أسئلة شائعة عن Docker وDevOps

هل يمكنكم نقل تطبيقي الحالي إلى Docker وإلى خادمي الخاص؟

نعم. عندما نقلنا pepechura.com من Vercel إلى خادمنا الخاص، أُعدّ الموقع ليقرأ إعادات التوجيه والترويسات من الملف نفسه على الاستضافتين، وبقيت البيئة القديمة تعمل لفترة كخيار للرجوع. ولتطبيقك نراجع الإعداد الحالي أولاً ثم نخطط للانتقال خطوة بخطوة.

هل تستخدمون Kubernetes؟

لا. في مشاريعنا حتى الآن كفى Docker Compose أو Coolify على خادم واحد، وكانت صيانته أبسط. وإذا كان حجمك يتطلب Kubernetes فسنقول ذلك بوضوح في المكالمة التعريفية.

هل قاعدة بياناتي مكشوفة على الإنترنت؟

لا. في Hippotenus يعمل PostgreSQL وRedis داخل شبكة Docker فقط ولا يُفتحان للخارج، ولا يصل المطورون إلى قاعدة بيانات الإنتاج إلا عبر نفق SSH. كما نشغّل الحاويات التي تحمل كود الخادم الخاص بنا بمستخدم غير root.

هل النسخ الاحتياطي والمراقبة ضمن العمل؟

بحسب النطاق. نكتب النسخ الاحتياطي، وعند الحاجة جمع السجلات ومراقبة التوفر، كبنود منفصلة في العرض. والأمثلة أعلاه: نسخ احتياطية ليلية مشفرة في Hippotenus، ومراقبة عبر Elastic Stack في أحد مشاريع العملاء.

ماذا يبقى لديّ في نهاية المشروع؟

ترخيص استخدام دائم للبرنامج ووثائق الاستخدام. وإذا أردت نقل الكود المصدري إليك مع ملفات Dockerfile ومسار النشر فذلك ممكن مقابل رسوم إضافية تُذكر بشكل منفصل في العرض.

خدمات ذات صلة

تطوير برمجيات مخصصةتطوير تطبيقات الويبتطوير MVP
تواصل معنا

لنتحدث عن طريقة النشر لديك

في مكالمة تعريفية مجانية مدتها 30 دقيقة نحدد معاً أين وكيف يجب أن يعمل تطبيقك، وكيف نجعل نشره آلياً.