تكنولوجيا

كيفية استخدام Docker لتجميع PHP و Apache – CloudSavvy IT

تجعل حاويات Docker تطبيقك قابلاً للنقل عبر البيئات. بمجرد حصولك على صورة الحاوية ، يمكنك استخدامها في أي مكان يتوفر فيه Docker. هذه طريقة لتجميع تطبيقات الويب PHP باستخدام خادم Apache.

سوف نستخدم صورة PHP Docker الرسمية كقاعدة. يتم توفير متغير تم تكوينه مسبقًا باستخدام Apache ، لذلك لا تحتاج إلى تثبيت خادم ويب بنفسك. توفر صورة PHP الأساسية أيضًا أدوات مساعدة ملائمة لإدارة امتدادات PHP.

قم بإنشاء ملف Dockerfile

صورة عامل ميناء من Dockerfile. يحتوي هذا الملف على تعليمات لبناء الصورة.الوصف يشمل Duplicateونسخ الملفات والمجلدات في الحاوية و Run، يتم تشغيل الأوامر في الحاوية.

يمكنك تشغيل موقع PHP بسيط عن طريق نسخ ملفاته إلى صورة بناءً على: php:8.-apache.

FROM php:8.-apache
WORKDIR /var/www/html

Copy index.php index.php
Duplicate src/ src
EXPOSE 80

هذا Dockerfile يحتاج index.php مع src انسخها من دليل العمل الخاص بنا إلى الدليل الجذر لوثيقة Apache. يمكنك الآن إنشاء الصورة وبدء حاوية منها. سترى أن موقع الويب الخاص بك يخدمه Apache.

docker establish -t my-php-web page:most up-to-date .
docker run -d -p 80:80 my-php-internet site:most current

جذر مستند Apache لصورة PHP Docker موجود في موقع دبيان الافتراضي /var/www/html.هذا WORKDIR تعليمات في Dockerfile يعني أنه سيتم تنفيذ الأوامر اللاحقة في دليل جذر المستند.

يعرض Apache نفسه على منفذ خادم الويب الافتراضي 80. EXPOSE تعليمات Dockerfile عبر عن هذا.من خلال تعريض المنفذ صراحة ، يمكنك استخدام -P وضع علامة باسم docker operate اربط منفذ المضيف العشوائي تلقائيًا بالمنفذ 80 من الحاوية.

تكوين مخصص اباتشي

تستند صورة PHP / Apache الرسمية إلى Debian.يمكنك استخدامها apt مدير الحزم لإضافة البرامج الأخرى التي تحتاجها.

لديك أيضًا وصول كامل إلى أدوات Apache المدمجة.يمكنك استخدامها a2enmod/a2dismod وحدة الإدارة و a2ensite/a2dissite تفاعل مع المضيف الظاهري.

ملف تكوين Apache الافتراضي هو /etc/apache2/apache2.conf. أضف سطورًا إلى هذا الملف أو استبدلها بالكامل لتوسيع تكوين Apache.

أحد التغييرات التي تستحق دائمًا القيام بها هو تعيين Apache بشكل صريح ServerName. سيؤدي هذا إلى إيقاف تحذير “تعذر تحديد اسم الخادم بشكل موثوق” والذي لا يمكن عرضه عادةً في سجل الحاوية.

عادة ما تحتاج أيضًا إلى إضافة مضيف Apache الظاهري الخاص بك. يسمح لك هذا بإعداد تكوينات مخصصة ، وليس فقط Apache 000-default متوفر على الموقع. هذه هي طريقة إجراء هذه التغييرات.

Copy my-apache-web site.conf /etcetera/apache2/websites-offered/my-apache-web-site.conf

Run echo "ServerName localhost" >> /etc/apache2/apache2.conf &&
    a2enmod rewrite &&
    a2dissite 000-default &&
    a2ensite my-apache-website &&
    provider apache2 restart

يقوم هذا المثال بتعطيل الموقع الافتراضي ، وتمكين الموقع المخصص وإعادة تشغيل Apache لتطبيق التغييرات.هذا mod_rewrite تم تمكين الوحدة أيضًا ، مما يسمح باستخدام Rewrite تعليمات .htaccess ملف.قد ترغب أيضًا في تمكين الوحدات النمطية الأخرى ، مثل headers إذا كان التكوين الخاص بك سيتفاعل مع رأس الاستجابة.

إضافة ملحق PHP

تحتوي صورة PHP Docker على أدوات مساعدة مدمجة لإدارة الامتدادات.يتم تمكين بعض الامتدادات بشكل افتراضي – يمكنك التحقق من الميزات المتاحة عن طريق تشغيل الأمر التالي php -m في حاوية جارية.

يمكن تثبيت العديد من الملحقات الشائعة الاستخدام باستخدام الأوامر التالية docker-php-ext-install:

docker-php-ext-install pdo_mysql

قبل تثبيت امتدادات معينة ، تحتاج إلى تكوينها.يمكنك استخدامها docker-php-ext-configure قم بإجراء التكوين المسبق للتثبيت. تختلف الخيارات المتاحة حسب الامتداد. اقرأ صفحة الدليل الخاصة بالملحق لتحديد العلامات التي يمكن تقديمها.

Run docker-php-ext-configure gd --with-jpeg=/usr/contain/ &&
    docker-php-ext-set up gd

يمكنك أيضًا استخدام الامتدادات الموزعة من خلال PECL. تتطلب هذه الملحقات عملية تثبيت من خطوتين.قم أولاً بتثبيت حزمة PECL ، ثم استخدم docker-php-ext-help قم بتسجيل الامتداد في تثبيت PHP الخاص بك.

Operate apt-get put in -y libmcached-dev zlib1g-dev &&
    pecl set up memcached-3.1.5 &&
    docker-php-ext-permit memcached

تكوين PHP

تم تكوين صورة Docker مسبقًا لتحميل ملف تكوين PHP الموجود في /usr/nearby/and so on/php/conf.d.اضف اشياءك الخاصة .ini ملفات لهذا الدليل. ستقوم PHP بتضمين محتواها في وقت التشغيل والكتابة فوق جميع القيم الموجودة. هذه هي الطريقة الموصى بها لتوسيع التكوين الافتراضي.

قد يتغير مسار دليل التكوين في المستقبل.يمكنك استخدامه للحصول على موقعه الحالي $PHP_INI_DIR متغيرات البيئة.يقرر حاليًا إلى /usr/nearby/and so forth/php/conf.d.

استخدم الملحن

افتراضيًا ، لا يتوفر Composer. الملحن هو نشاط مجتمعي وهو موجود بشكل مستقل عن PHP. إذا كنت تريد استخدامه في حاوية Docker ، فأنت بحاجة إلى تثبيته يدويًا.

أفضل طريقة لاستخدام Composer في بناء هي الرجوع إلى صورة Docker الخاصة بالأداة من خلال بناء متعدد المراحل.استعمال Duplicate --from قم بإحضار ثنائيات Composer إلى حاوية PHP الخاصة بك ؛ بعد ذلك ، يمكنك استخدام Composer كالمعتاد لتثبيت تبعيات المشروع.

Copy --from=composer:2 /usr/bin/composer /usr/bin/composer
Duplicate composer.json composer.json
Copy composer.lock composer.lock
Operate composer put in --no-dev

يمكن أن يؤدي استخدام هذه الطريقة إلى تقليل التعقيد. لست بحاجة إلى تنزيل وتشغيل البرنامج النصي لتثبيت Composer.بالتزكية composer:2سيقوم Docker باستخراج الصورة ثم نسخ ملف Composer الثنائي.

برنامج نصي مخصص لنقطة الدخول

إذا كنت ترغب في تشغيل ترحيل التطبيق قبل تشغيل الخادم الرئيسي ، فقد تحتاج إلى استخدام برنامج نصي مخصص لنقطة الإدخال.يمكنك تغطية الحاوية ENTRYPOINT استخدم تسلسل بدء التشغيل الخاص بك.

يمكنك متابعة تنفيذ الحاوية بشكل طبيعي عن طريق تنفيذ الأمر التالي apache2-foreground. سيؤدي هذا إلى تشغيل Apache في المقدمة ، مما يمنع الحاوية من الخروج بعد اكتمال البرنامج النصي لنقطة الإدخال.

ENTRYPOINT ["bash", "/Docker.sh"]

Docker.sh المحتوى:

php application.php my-migration-command    # run migrations
services cron start                  # commence some products and services
exec apache2-foreground             # key execution

ختاما

عند استخدام الصورة الرسمية ، من السهل جدًا إجراء معالجة Docker على خدمة الويب Docker PHP. يمكنك بسهولة تكوين Apache و PHP بالامتدادات وملفات التكوين الخاصة بك.

ستواجه على الأرجح صعوبات عند محاولة استخدام مكونات إضافية لمجتمع طرف ثالث مثل Composer. لا يتم تضمينها بشكل افتراضي ، لذلك تحتاج إلى استخدام بناء Docker متعدد المراحل أو عملية التثبيت اليدوي.

يتيح استخدام Docker لتطبيقك أن يكون لديك طرق نشر وطرق نشر متعددة.مع صورتك ، يمكنك فقط استخدام docker build مع docker operate في المحطة الخاصة بك.

مقالات ذات صلة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى