يُعَدّ Docker حاويةً شائعة جدًا تُستخدم على نطاقٍ واسع كحلّ لنشر الشيفرة في بيئات الإنتاج، كما أنها تسهّل إدارة وتوسيع تطبيقات الويب والخدمات الصغيرة.
الحصول على صورة دوكر من أجل php
لنشر التطبيق على دوكر نحتاج أولًا للحصول على الصورة من السجل registry.
docker pull php
سيوفر لك هذا أحدث إصدار للصورة من مستودع php الرسمي، تُستخدم php بشكلٍ عام لنشر تطبيقات الويب لذا نحتاج إلى خادم http ليتوافق مع الصورة. تأتي الصورة في الإصدار php:7.0 (أو إصدار أحدث) مُثبّتة مسبقًا مع apache لتنشر تطبيقك بدون مشاكل.
كتابة dockerfile
يُستخدم Dockerfile
لضبط الصورة المخصصة التي سننشئها مع شيفرات تطبيق الويب، ننشئ ملف جديد Dockerfile
في المجلد الجذر للمشروع ونضع فيه المحتويات التالية:
FROM php:7.0-apache COPY /etc/php/php.ini /usr/local/etc/php/ COPY . /var/www/html/ EXPOSE 80
يستخدم السطر الأول لوصف الصورة التي يجب استخدامها لإنشاء صورة جديدة، يمكن تغيير هذا إلى أي إصدار PHP آخر محدد من السجل، والسطر الثاني لتحميل ملف php.ini
إلى الصورة ويمكنك تغيير هذا الملف إلى موقع ملف مخصص آخر، وينسخ السطر الثالث الشيفرات في المجلد الحالي إلى /var/www/html
والذي هو webroot بالنسبة لنا، تذكر أن /var/www/html
داخل الصورة، أما السطر الأخير فسيفتح المنفذ 80 داخل حاوية دوكر.
قد يكون لديك في بعض الحالات بعض الملفات التي لا تريدها على الخادم مثل ملف إعدادات البيئة، بفرض أنّ إعدادات البيئة موجودة لدينا في ملف .env
ونريد تجاهله عندها نضيفه إلى .dockerignore
في المجلد الجذر لشيفرتنا.
بناء الصورة
إنّ بناء الصورة شيء غير محدد في php، لكن لبناء الصورة التي تحدثنا عنها في الأعلى نستخدم مايلي:
docker build -t <Image name> .
يمكننا التحقق من بناء الصورة باستخدام:
docker images
سيعطيك هذا الأمر كل الصور المثبتة في نظامك.
بدء حاوية التطبيق
يمكننا البدء بتقديم الخدمة بمجرد أن تصبح الصورة جاهزة، نستخدم ما يلي لإنشاء حاوية من الصورة:
docker run -p 80:80 -d <Image name>
ستوجّه -p 80:80
في الأمر السابق المنفذ 80 الخاص بخادمك إلى المنفذ 80 الخاص بالحاوية، وستخبر الراية -d
أنّه يجب تنفيذ الحاوية في الخلفية وتصف <Image name>
الصورة التي يجب استخدامها لبناء الحاوية.
التحقق من الحاوية
نستخدم ما يلي للتحقق من الحاويات قيد التنفيذ:
docker ps
سيعطينا هذا الأمر قائمة بكل الحاويات التي تُنفَّذ.
سجلات التطبيق
تعدّ السجلات مهمة جدًا لتنقيح أخطاء التطبيق، وللتحقق منها نستخدم الأمر:
docker logs <Container id>
مخزن APCu
APCu هو مخزن قيمة-مفتاح للذاكرة المشتركة في PHP، تُشارك الذاكرة بين عملياتPHP-FPM (أي Fast Process Manager) في نفس المجمع pool وتستمر البيانات المخزنة بين العمليات.
تكرار محتويات المداخل
يسمح الصنف APCUIterator بتكرار محتويات المداخل في المخزن المؤقت cache:
foreach (new APCUIterator() as $entry) { print_r($entry); }
يمكن تهيئة المكرِّر بتعبير نمطي اختياري لاختيار المداخل المتطابقة مع المفاتيح فقط:
foreach (new APCUIterator($regex) as $entry) { print_r($entry); }
يمكن الحصول على معلومات مدخل ذاكرة مؤقتة واحدة بالشكل التالي:
$key = '…'; $regex = '(^' . preg_quote($key) . '$)'; print_r((new APCUIterator($regex))->current());
تخزين واسترجاع بسهولة
يمكن استخدام apcu_store لتخزين قيم وapcu_fetch لاستعادتها:
$key = 'Hello'; $value = 'World'; apcu_store($key, $value); print(apcu_fetch('Hello')); // 'World'
تخزين معلومات
توفر apcu_cache_info معلومات حول المخزن ومداخله:
print_r(apcu_cache_info());
لاحظ أنّ استدعاء apcu_cache_info()
بدون حد سيعيد كل البيانات المخزنة حاليًا، ولهذا نستخدم apcu_cache_info(true)
، للحصول على البيانات الوصفية فقط، كما أنه من الأفضل استخدام الصنف APCUIterator
للحصول على معلومات عن مداخل ذاكرة تخزين مؤقتة محددة.
ترجمة -وبتصرف- للفصل Docker deployment - APCu من كتاب PHP Notes for Professionals book
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.