ديف أوبس

تبسيط عملية التطوير: إعداد Laravel مع Nginx و MySQL باستخدام Docker Compose

في عالم تطوير البرمجيات، يعتبر Laravel واحدًا من أكثر الأطُر إثارة للاهتمام، حيث يقدم إطار عمل PHP القوي والمستقر لبناء تطبيقات ويب متقدمة. إن إعداد بيئة تطوير محلية تكون معقدة أحيانًا، ولكن باستخدام Docker Compose، يمكنك تبسيط هذه العملية وتوفير بيئة موحدة وقابلة للتكرار.

أولاً وقبل كل شيء، يجب عليك إنشاء ملف docker-compose.yml لتعريف الخدمات التي تحتاجها تطبيقك. لبداية سلسة، دعنا نتخذ خطوات لإعداد خدمات Laravel مع Nginx كخادم و MySQL كقاعدة بيانات.

yaml
version: '3' services: # خدمة MySQL mysql: image: mysql:latest environment: MYSQL_DATABASE: laravel_db MYSQL_ROOT_PASSWORD: secret MYSQL_USER: laravel_user MYSQL_PASSWORD: laravel_password # خدمة Laravel laravel: build: context: . dockerfile: Dockerfile image: laravel-app volumes: - ./laravel:/var/www/html depends_on: - mysql environment: DB_CONNECTION: mysql DB_HOST: mysql DB_PORT: 3306 DB_DATABASE: laravel_db DB_USERNAME: laravel_user DB_PASSWORD: laravel_password # خدمة Nginx nginx: image: nginx:latest ports: - "8080:80" volumes: - ./laravel:/var/www/html - ./nginx/default.conf:/etc/nginx/conf.d/default.conf depends_on: - laravel

في هذا الملف، قمنا بتعريف ثلاث خدمات: MySQL، Laravel، و Nginx. MySQL تحتاج إلى متغيرات بيئية لتكوين قاعدة البيانات، ولكن Laravel تحتاج إلى بعض التكوين للاتصال ب MySQL.

لإعداد Laravel، سنستخدم Dockerfile:

Dockerfile
FROM composer:latest AS build WORKDIR /app COPY . . RUN composer install --ignore-platform-reqs FROM php:8.0-fpm WORKDIR /var/www/html COPY --from=build /app . RUN chown -R www-data:www-data /var/www/html

هذا الملف يُنشئ مرحلتين. المرحلة الأولى تقوم بتثبيت تبعيات Laravel باستخدام Composer، والمرحلة الثانية تقوم ببناء صورة PHP-FPM ونسخ الملفات.

بالإضافة إلى ذلك، يجب إنشاء ملف تكوين Nginx default.conf:

nginx
server { listen 80; index index.php index.html; server_name localhost; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/html/public; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass laravel:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } location ~ /\.ht { deny all; } }

هذا الملف يحدد تكوين Nginx الخاص بتشغيل Laravel.

بعد إنشاء هذه الملفات، يمكنك تشغيل تطبيق Laravel الخاص بك باستخدام الأمر:

bash
docker-compose up -d

بهذا، ستكون قد نشأت بيئة Laravel مع خادم Nginx وقاعدة بيانات MySQL باستخدام Docker Compose. تأكد من أن الملفات والتكوينات تعكس احتياجات تطبيقك الخاص وتعديلها حسب الحاجة.

المزيد من المعلومات

بالطبع، دعنا نعمق أكثر في الخطوات ونقدم مزيدًا من التفصيل حول كل جزء في عملية إعداد Laravel مع Nginx و MySQL باستخدام Docker Compose.

MySQL:

في قسم الخدمة MySQL في ملف docker-compose.yml، نقوم بتحديد صورة Docker لـ MySQL ونقوم بتكوين بعض المتغيرات البيئية:

  • MYSQL_DATABASE: اسم قاعدة البيانات التي سيتم إنشاؤها.
  • MYSQL_ROOT_PASSWORD: كلمة مرور المستخدم الجذر (يُفضل تحديدها بشكل آمن).
  • MYSQL_USER و MYSQL_PASSWORD: معلومات مستخدم قاعدة البيانات.

Laravel:

في قسم الخدمة Laravel، قمنا بتحديد بنية Dockerfile لبناء صورة Laravel. يتم في المرحلة الأولى استخدام Composer لتثبيت التبعيات، والمرحلة الثانية تستخدم صورة PHP-FPM لتشغيل التطبيق. يتم نسخ الملفات من المرحلة الأولى إلى المرحلة الثانية.

Nginx:

في قسم الخدمة Nginx، نستخدم صورة Nginx ونعرف تكوين ملف default.conf. يحدد هذا الملف كيفية توجيه طلبات HTTP إلى تطبيق Laravel. يتم تحديد موقع الملفات وملف التكوين الرئيسي لـ Nginx.

  • listen 80: يعين Nginx على الاستماع على المنفذ 80.
  • server_name: يحدد اسم الخادم (في هذه الحالة، localhost).
  • root: يحدد مسار الجذر لتطبيق Laravel.
  • قسم location /: يعين كيفية توجيه الطلبات إلى Laravel.
  • قسم location ~ \.php$: يحدد كيفية معالجة ملفات PHP.
  • قسم location ~ /\.ht: يمنع الوصول إلى ملفات .htaccess.

التشغيل:

عند تشغيل docker-compose up -d، يبدأ Docker في إنشاء الخدمات المحددة في ملف docker-compose.yml. يتم إنشاء حاويات Docker لكل خدمة وتكوين البيئة حسب المتغيرات المحددة.

التحقق:

للتحقق من أن النظام قيد التشغيل بشكل صحيح، يمكنك استخدام الأمر:

bash
docker-compose ps

يجب أن تظهر حالة “Up” لجميع الخدمات.

الوصول إلى التطبيق:

يمكنك الوصول إلى تطبيق Laravel عبر المتصفح باستخدام http://localhost:8080. قد تحتاج إلى تنفيذ الأمر docker-compose exec laravel bash للوصول إلى حاوية Laravel وتشغيل الأوامر داخلها (مثل تنفيذ الهجرة لقاعدة البيانات).

الاستنتاج:

باستخدام Docker Compose، يصبح إعداد Laravel مع Nginx و MySQL عملية بسيطة وقابلة للتكرار. يمكنك تكامل الخدمات بسهولة وضبط الإعدادات وفقًا لاحتياجات تطبيقك. يُسهم هذا النهج في تبسيط عملية تطوير البرمجيات وتحسين فعالية الفريق التطوير.

الخلاصة

في ختام هذا الاستعراض الشامل لإعداد Laravel مع Nginx و MySQL باستخدام Docker Compose، نجد أن هذه العملية تقدم حلاً فعالاً وموحداً لبناء بيئة تطوير قوية ومستقرة. باستخدام تقنية Docker، يمكن للمطورين تجنب التعقيدات التي قد تنشأ عن تثبيت وتكوين البرمجيات والخدمات الضرورية.

ملف docker-compose.yml يعمل كملف إعداد مركزي يجمع بين خدمات Laravel و Nginx و MySQL، مما يسمح بتشغيل تلك الخدمات بسهولة وتكاملها بشكل فعال. بفضل قدرة Docker على عزل البيئات وتكوينها بسرعة، يمكن للمطورين إعادة إنشاء بيئات التطوير بسرعة ودون عناء.

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

بهذا، نستنتج أن استخدام Docker Compose لإعداد Laravel مع Nginx و MySQL هو خيار ذكي يوفر سهولة التكامل والتكرار، ويساعد في تحسين عمليات التطوير والاختبار.

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