التصنيف: دورة أتمتة السيرفرات وهندسة الـ DevOps (DevOps & Cloud Automation)

دورة أتمتة السيرفرات وهندسة الـ DevOps (DevOps & Cloud Automation)

ربط حاوية خادم (Backend) بحاوية قاعدة بيانات (MySQL/PostgreSQL) آلياً

ربط حاوية خادم Backend بحاوية قاعدة بيانات MySQL أو PostgreSQL آلياً ربط التطبيق الخلفي بقاعدة البيانات داخل بيئة حاويات ليس مجرد تشغيل خدمتين معاً، بل هو تصميم شبكة خدمات صغيرة تتواصل بشكل متوقع وآمن وقابل للتكرار. في المشاريع الحديثة، الهدف ليس أن يعمل الربط مرة واحدة فقط، بل أن ينجح تلقائياً في بيئات التطوير والاختبار…

كتابة أول ملف docker-compose.yml خطوة بخطوة

كتابة أول ملف docker-compose.yml خطوة بخطوة عندما ينتقل المشروع من حاوية واحدة إلى عدة خدمات مترابطة، يصبح التشغيل اليدوي عبر أوامر docker run مرهقاً ومعرضاً للأخطاء. هنا تظهر قيمة Docker Compose كطبقة توصيف declarative تسمح لك بتجميع التطبيق كاملاً داخل ملف واحد مفهوم وقابل للتكرار. إذا كنت قد قرأت سابقاً ما هو Docker Compose؟ ولماذا…

ما هو Docker Compose؟ ولماذا نحتاجه لتشغيل المشاريع المعقدة؟

ما هو Docker Compose؟ ولماذا نحتاجه لتشغيل المشاريع المعقدة؟ عندما يبدأ المطور باستخدام Docker لأول مرة، يبدو تشغيل حاوية واحدة أمراً بسيطاً وواضحاً. لكن الواقع العملي في المشاريع الحديثة نادراً ما يعتمد على خدمة واحدة فقط. غالباً ما نجد تطبيقاً يتكون من واجهة أمامية، وواجهة خلفية، وقاعدة بيانات، وطبقة تخزين مؤقت، وربما أدوات مراقبة أو…

مشروع مصغر: بناء وتغليف تطبيق تفاعلي مع قاعدة بيانات داخل حاوية معزولة

مشروع مصغر: لماذا نغلف التطبيق وقاعدة البيانات داخل بيئة معزولة؟ في المشاريع الحديثة، لم يعد تشغيل التطبيق مباشرة على نظام التشغيل خياراً عملياً عند البحث عن الثبات وسهولة النقل. الفكرة الأساسية في Containerization هي عزل التطبيق مع اعتمادياته داخل بيئة متوقعة يمكن تشغيلها على أي خادم تقريباً بنفس السلوك. هذا النموذج يعالج مشكلة اختلاف البيئات…

التخزين الدائم (Docker Volumes): كيف نمنع ضياع قواعد البيانات عند توقف الحاوية؟

أحد أكثر الأخطاء شيوعاً عند بناء بيئات تعتمد على Docker هو التعامل مع الحاوية وكأنها خادم دائم. الواقع أن الحاوية كيان مؤقت بطبيعته، وعند حذفها أو إعادة إنشائها يمكن أن تضيع البيانات المخزنة داخل نظام الملفات الخاص بها، خصوصاً إذا كانت تلك البيانات تخص MySQL أو PostgreSQL أو أي خدمة تخزين حالة Stateful. لهذا السبب…