كيفية استخدام 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
في المحطة الخاصة بك.