لعلك تتساءل عن السبب الذي يجعلنا نستخدم Docker لتثبيت lamp أو lemp في حين أننا نستطيع تثبيتهما يدويًا؟ فتثبيتهما سهل ولا يحتاج إلى الكثير من التعقيد، لماذا نلجأ إلى Docker؟ دعني أجيب عن هذا السؤال، إنّ docker برنامج خفيف ويغنينا عن الحاجة إلى الآلات الوهمية مثل Virtualbox أو Xen أو غيرهما لنختبر أو نثبت أنظمة التشغيل.
وفائدته معنا في هذا المقال أننا نستطيع استخدامه لسحب نسخ جاهزة من LAMP أو LEMP لتشغيلها في بضع دقائق، بدلًا من التثبيت اليدوي لأباتشي، ثم قاعدة بيانات مثل MariaDB أو mySQL، ثم PHP. وتحدث هذه الحالة التي تحتاج فيها إلى نسخة جاهزة وسريعة لاختبار شيء ما عليها إن كنت مطورًا أو مختبرًا أو شغوفًا بالبرمجة وتريد أن تختبر تطبيقًا يعمل في الويب، فتجد نفسك في حاجة إلى تثبيت كل تلك الخطوات التي ذكرتها في الفقرة السابقة، ولعلك جربت هذا من قبل ووجدتها عملية مرهقة وطويلة، وهنا تبرز ميزة Docker حيث يمكننا تثبيت وتشغيل برامج جاهزة ومعدة مسبقًا مباشرة دون الحاجة إلى خوض تفاصيلها التقنية كأننا نثبتها لأول مرة بأنفسنا. وهو ما سنشرحه في هذا المقال على LAMP أو LEMP.
تثبيت LAMP/LEMP باستخدام Docker
دعنا نبحث في docker عن نسخ جاهزة من LAMP أو LEMP:
$ sudo docker search lamp
وسيكون الخرج مشابهًا لهذا:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
reinblau/lamp Dockerfile for PHP-Projects with MySql client 17 [OK]
dockie/lamp 6 [OK]
nickistre/ubuntu-lamp LAMP server on Ubuntu 4 [OK]
nickistre/ubuntu-lamp-wordpress LAMP on Ubuntu with wp-cli installed 4 [OK]
nickistre/centos-lamp LAMP on centos setup 3 [OK]
damienlagae/lamp Docker LAMP with supervisord 3 [OK]
boolean93/lamp LAMP based on linode/lamp 2 [OK]
drunomics/lamp 1 [OK]
avatao/lamp LAMP base image 1 [OK]
nickistre/ubuntu-lamp-xdebug LAMP on Ubuntu with xdebug installed 1 [OK]
nickistre/centos-lamp-wordpress LAMP on CentOS setups with wp-cli installed 1 [OK]
linuxconfig/lamp Automated build LAMP stack environment for... 1 [OK]
greyltc/lamp a super secure, up-to-date and lightweight... 0 [OK]
kazaoki/lamp ローカルフォルダをマウントす... 0 [OK]
greyltc/lamp-gateone LAMP stack with gateone server & webdav 0 [OK]
fauria/lamp Modern, developer friendly LAMP stack. Inc... 0 [OK]
drunomics/lamp-memcached LAMP + Memcached base image. 0 [OK]
rpawel/lamp Apache 2.4 + php5-fpm container 0 [OK]
lioshi/lamp Docker image for LAMP + MySql under debian 0 [OK]
nickistre/centos-lamp-xdebug LAMP on centos with xDebug 0 [OK]
greyltc/lamp-aur LAMP stack (in Arch with php7) with AUR ac... 0 [OK]
alledia/lamp General LAMP for our tests, based on phusi... 0 [OK]
greatfox/lamp 0 [OK]
cnrk/lamp LAMP stack Docker image. 0 [OK]
grmanit/lamp Based on tutum/lamp with additional settin... 0 [OK]
وكما ترى من النتيجة أعلاه، فهناك الكثير من نسخ LAMP المتوفرة لتوزيعات آرتش وCent OS وأوبنتو، وهي مرتبة وفق تقييم المستخدمين لها.
وبالمثل يمكننا أن نبحث عن LEMP أيضًا:
$ sudo docker search lemp
ثم اختر نسخة lemp مناسبة لك، سأحمّل أنا مثلًا nickistre/ubuntu-lamp:
$ docker pull nickistre/ubuntu-lamp
ويكون الخرج مشابهًا لهذا:
Using default tag: latest
latest: Pulling from nickistre/ubuntu-lamp
faecf96fd5ab: Pull complete
995977506e98: Pull complete
efb63fb8dcb6: Pull complete
a3ed95caeb02: Pull complete
61626f5cc06d: Pull complete
d42e54d21590: Pull complete
4a32d1f581a1: Pull complete
52f44a8dd6d0: Pull complete
ce6c1074ae9e: Pull complete
2fa559435609: Pull complete
93a433221384: Pull complete
521d09b9a2d1: Pull complete
6222edddc59d: Pull complete
8fa401b50efc: Pull complete
683063a5d5e0: Pull complete
1f87fa5088b3: Pull complete
c5ee1c14048f: Pull complete
Digest: sha256:e913d43c204b3cdb931156c1a680c712acfe8db531225ec7b9e4708fc7ebe93c
Status: Downloaded newer image for nickistre/ubuntu-lamp:latest
سيحمّل الأمر أعلاه نسخة LAMP لأوبنتو، يمكنك تحميل نسختك الخاصة لتوزيعتك كما أوضحنا قبل قليل. وإن لم ترغب في تحميل واستخدام النسخ التي يوفرها docker من الطرفية، فيمكنك تحميلها من Docker hub حيث تجد آلاف النسخ المستضافة هناك.
اذهب إلى الرابط أعلاه وابحث عن نسخة LAMP التي تريدها وحمّلها.
في حالتي أنا، فقد اخترت نسخة nickistre/ubuntu-lamp كما قلت قبل قليل:
اضغط على النسخة التي تريد لمعرفة مزيد من البيانات عنها مثل كيفية تثبيتها واستخدامها:
ستجد النسخ التي تحملها في مجلد var/lib/docker/، ولسرد تلك النسخ نفذ الأمر التالي:
$ docker images
مثال للخرج:
REPOSITORY TAG IMAGE ID CREATED SIZE
nickistre/ubuntu-lamp latest 5e750e4f49e4 2 days ago 633 MB
reinblau/lamp latest 2813b461f843 9 days ago 697.9 MB
hello-world latest 690ed74de00f 5 months ago 960 B
والآن نشغّل النسخة بعد أن حمّلناها:
$ docker run -it nickistre/ubuntu-lamp /bin/bash
ستجد نفسك قد دخلت بشكل آلي إلى المجلد الجذر للحاوية على الويب كمستخدم جذر:
root@184851ac9ebd:/#
شغّل خدمة أباتشي:
# service apache2 start
ثم خدمة MySQL:
# service mysql start
تأكد ما إن كان خادم أباتشي يعمل أم لا، بفتح هذه الصفحة في متصفحك http://container_IP/.
ولكي تجد عنوان IP، اكتب ifconfig أو ip addr في طرفية الحاوية، يجب أن ترى هنا صفحة اختبار خادم أباتشي. ويمكنك معرفة إصدارات أباتشي وMySQL وPHP بهذه الأوامر بالترتيب:
# apache2 -v
# mysql -v
# php -v
وهكذا نكون قد ثبتنا LAMP في أوبنتو واستخدمناه، ويمكنك الآن أن تختبر تطبيقك كما كنت تريد، دون أن تشغل بالك بتثبيت كل تلك الحزم يدويًا أو على حاسوبك، حتى لو كان في آلة وهمية.
اقتباسملاحظة للمبتدئين:
استخدم Docker لأغراض التطوير والاختبار فقط، وانتبه أن تخلط بينه وبين برامج الآلات الوهمية الأخرى، فهو لن يثبّت شيئًا على حاسوبك، بل ما يفعله هو تثبيت نظام ضيف “نطلق عليه حاوية في Docker” ثم نثبت داخله LAMP.
قد يكون هذا شبيهًا ببرامج الآلات الوهمية الأخرى، لكن الفرق أن البرامج الأخرى تستخدم نواة حاسوبك الحقيقي وبقية موارده مثل المعالج والذاكرة وغيرهم، بينما Docker يعمل على خادم بعيد في السحابة.
ترجمة -بتصرف- لمقال Deploy LAMP and/or LEMP stacks easily using Docker لصاحبه SK
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.