ديف أوبس

إعداد حاوية لارافيل باستخدام دوكر

إعداد حاوية لتطبيق لارافيل باستخدام دوكر كومبوز Docker Compose

مقدمة

في عالم تطوير البرمجيات الحديث، تزداد أهمية أدوات حاويات التطبيقات مثل دوكر (Docker) لتسهيل نشر التطبيقات بشكل موثوق ومتسق عبر بيئات مختلفة. من بين هذه الأدوات، دوكر كومبوز (Docker Compose) هو أداة قوية تُستخدم لتحديد وتشغيل تطبيقات متعددة الحاويات باستخدام ملف تكوين واحد. هذه التقنية ضرورية للمطورين الذين يعملون مع تطبيقات معقدة تعتمد على مكونات متعددة، مثل قاعدة بيانات وخوادم ويب وواجهات برمجة التطبيقات. من خلال هذا المقال، سنتناول كيفية إعداد حاوية لتطبيق لارافيل (Laravel) باستخدام دوكر كومبوز، خطوة بخطوة.

ما هو دوكر كومبوز؟

دوكر كومبوز هو أداة مفتوحة المصدر تتيح للمطورين إدارة تطبيقات متعددة الحاويات عبر ملف تكوين واحد. باستخدام ملف docker-compose.yml، يمكن للمطورين تحديد الحاويات اللازمة لتشغيل التطبيق، مثل الخوادم وقواعد البيانات، وربطها ببعضها البعض بسهولة. يوفر Docker Compose بيئة موحدة لتشغيل التطبيقات في بيئات التطوير والإنتاج، مما يضمن أن التطبيق يعمل بنفس الطريقة عبر جميع الأنظمة.

لماذا استخدام دوكر مع لارافيل؟

تطبيق لارافيل هو إطار عمل PHP شهير يستخدم لبناء تطبيقات ويب معقدة. باستخدام دوكر مع لارافيل، يمكننا الاستفادة من مزايا الحاويات مثل:

  1. سهولة الإعداد: إعداد بيئة تطوير محلية متكاملة بنظام التشغيل الذي يعمل على تطبيق لارافيل من خلال حاويات دوكر.

  2. الاستقلالية عن البيئة: يمكن لتطبيق لارافيل أن يعمل على أي نظام تشغيل بما في ذلك Windows، Linux، وmacOS دون الحاجة إلى تعديلات بيئية.

  3. التوافق مع الأنظمة: يساعد دوكر في تكرار بيئة الإنتاج على جهاز المطور دون الحاجة إلى إعدادات معقدة.

المتطلبات الأساسية

قبل البدء في إعداد حاوية لتطبيق لارافيل باستخدام دوكر كومبوز، تأكد من أن لديك الأدوات التالية مثبتة على جهازك:

  1. دوكر (Docker): يجب أن يكون لديك نسخة مثبتة من دوكر. يمكن تنزيل دوكر من الموقع الرسمي docker.com.

  2. دوكر كومبوز (Docker Compose): بعد تثبيت دوكر، تأكد من تثبيت دوكر كومبوز أيضاً. عادة ما يتم تثبيته بشكل تلقائي مع دوكر.

  3. تطبيق لارافيل: يجب أن يكون لديك تطبيق لارافيل جاهز للاستخدام. يمكنك إما إنشاء تطبيق جديد باستخدام الأمر laravel new project-name أو استخدام مشروع موجود.

خطوات إعداد حاوية لتطبيق لارافيل باستخدام دوكر كومبوز

1. إنشاء ملف docker-compose.yml

ملف docker-compose.yml هو ملف تكوين يُستخدم لتعريف الحاويات المختلفة التي يحتاجها التطبيق. في هذا الملف، سنقوم بتحديد الحاويات اللازمة لتشغيل تطبيق لارافيل، مثل الحاوية الخاصة بـ PHP، الحاوية الخاصة بـ Nginx، والحاوية الخاصة بقاعدة البيانات (MySQL أو PostgreSQL).

هيكل الملف:

yaml
version: '3' services: app: image: php:8.0-fpm container_name: laravel-app volumes: - ./src:/var/www/html working_dir: /var/www/html networks: - laravel-network depends_on: - db web: image: nginx:alpine container_name: laravel-web ports: - "8080:80" volumes: - ./src:/var/www/html - ./nginx/default.conf:/etc/nginx/conf.d/default.conf networks: - laravel-network depends_on: - app db: image: mysql:5.7 container_name: laravel-db environment: MYSQL_ROOT_PASSWORD: secret MYSQL_DATABASE: laravel MYSQL_USER: laravel MYSQL_PASSWORD: secret volumes: - db-data:/var/lib/mysql networks: - laravel-network networks: laravel-network: driver: bridge volumes: db-data:

شرح محتويات الملف:

  1. الخدمة app: هذه الحاوية تحتوي على بيئة PHP باستخدام صورة php:8.0-fpm. يتم ربط المجلد src الذي يحتوي على الكود الخاص بتطبيق لارافيل بمجلد /var/www/html داخل الحاوية.

  2. الخدمة web: تحتوي هذه الحاوية على Nginx كخادم ويب. يتم ربط نفس المجلد src مع /var/www/html داخل الحاوية. كما يتم ربط ملف تكوين Nginx من جهاز المضيف إلى الحاوية.

  3. الخدمة db: هذه الحاوية تحتوي على MySQL لتخزين بيانات التطبيق. يتم تحديد كلمة مرور الجذر وقاعدة البيانات واسم المستخدم باستخدام المتغيرات البيئية.

  4. الشبكة laravel-network: تُستخدم هذه الشبكة لربط جميع الحاويات ببعضها البعض بحيث يمكنها التواصل.

  5. التخزين db-data: يتم استخدام حجم لتخزين بيانات قاعدة البيانات بشكل دائم.

2. إعداد ملف تكوين Nginx

في هذا المثال، نحتاج إلى إعداد ملف تكوين لـ Nginx لتوجيه الطلبات إلى تطبيق لارافيل. أنشئ مجلدًا يسمى nginx في مجلد المشروع وداخل هذا المجلد أنشئ ملفًا يسمى default.conf.

nginx
server { listen 80; server_name localhost; root /var/www/html/public; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass app:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name; include fastcgi_params; } error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; }

3. بناء وتشغيل الحاويات باستخدام Docker Compose

بعد إعداد الملف docker-compose.yml وملف تكوين Nginx، يمكنك بناء الحاويات وتشغيلها باستخدام الأمر التالي:

bash
docker-compose up --build

سيقوم هذا الأمر بتنزيل الصور اللازمة (إذا لم تكن موجودة)، وبناء الحاويات، ثم تشغيلها. بعد إتمام العملية، يمكنك الوصول إلى تطبيق لارافيل من خلال المتصفح عبر العنوان http://localhost:8080.

4. إعداد تطبيق لارافيل داخل الحاوية

بمجرد تشغيل الحاويات، يجب عليك تنفيذ بعض الأوامر داخل الحاوية لتثبيت الاعتمادات الخاصة بتطبيق لارافيل. يمكنك القيام بذلك باستخدام الأمر التالي:

bash
docker-compose exec app bash

ستدخل إلى الحاوية الخاصة بـ PHP وتستطيع تنفيذ الأوامر التالية لتثبيت composer و التبعيات:

bash
composer install

5. تكوين البيئة

تأكد من إعداد ملف .env لتطبيق لارافيل بحيث يتوافق مع إعدادات قاعدة البيانات في حاوية MySQL. يجب تعديل القيم في الملف ليتمكن تطبيق لارافيل من الاتصال بقاعدة البيانات:

dotenv
DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel DB_PASSWORD=secret

6. التحقق من التطبيق

بعد إتمام جميع الخطوات، يمكنك التحقق من التطبيق في متصفحك عبر الرابط http://localhost:8080. يجب أن ترى الصفحة الرئيسية لتطبيق لارافيل. كما يمكنك التفاعل مع التطبيق بشكل طبيعي عبر الواجهة.

الخاتمة

استخدام دوكر كومبوز لإنشاء حاويات لتطبيق لارافيل يوفر للمطورين بيئة تطوير موحدة ومرنة. من خلال إعداد الحاويات الخاصة بـ PHP وNginx وMySQL، يمكن للمطورين ضمان أن تطبيقاتهم ستعمل بنفس الطريقة عبر جميع البيئات. هذا الحل يجعل عملية التطوير والإنتاج أسهل وأسرع، ويقلل من المخاطر المرتبطة بتكرار بيئات العمل.