← العودة إلى المدونة

المدونة

إتقان نشر ووردبريس باستخدام Docker Compose: دليل عملي

تعلم كيفية الاستفادة من Docker و Docker Compose لإنشاء بيئات ووردبريس قوية ومعزولة وسهلة الإدارة. يقدم هذا الدليل خطوات عملية لإعداد موقع ووردبريس الخاص بك في حاويات، مما يضمن الاتساق وتبسيط عملية النشر.

ملخص

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

إتقان نشر ووردبريس باستخدام Docker Compose: دليل عملي

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

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

المشكلة: دورة حياة نشر ووردبريس الهشة

تقليديًا، يتضمن إعداد موقع ووردبريس تثبيت PHP، وخادم ويب (مثل Apache أو Nginx)، وقاعدة بيانات (عادةً MySQL أو MariaDB)، ثم ملفات ووردبريس الأساسية. هذه العملية، على الرغم من أنها مألوفة، لها نقاط ضعف متأصلة عديدة:

  • انحراف البيئة: ما يعمل على جهازك المحلي قد لا يعمل على خادم الاختبار أو الإنتاج بسبب الاختلافات في أنظمة التشغيل، أو المكتبات المثبتة، أو إعدادات التكوين.
  • جحيم الاعتماديات: يمكن أن تصبح إدارة إصدارات محددة من PHP أو MySQL أو الملحقات المطلوبة الأخرى كابوسًا، مما يؤدي إلى مشكلات التوافق.
  • الإعداد والإزالة المعقدة: يمكن أن يكون إعداد بيئة تطوير جديدة أو ترحيل موقع موجود مستهلكًا للوقت وعرضة للأخطاء.
  • عدم كفاءة الموارد: يمكن أن يؤدي تشغيل تطبيقات ويب متعددة على خادم واحد إلى تنافس الموارد وتعارضاتها.
  • عقبات قابلية التوسع: غالبًا ما يتطلب توسيع نطاق إعداد ووردبريس التقليدي تكوين خادم يدوي وتوازن تحميل معقد.

الحل: Docker و Docker Compose لووردبريس المعزول

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

Docker Compose هي أداة لتعريف وتشغيل تطبيقات Docker متعددة الحاويات. تستخدم ملف YAML لتكوين خدمات تطبيقك وشبكاته ووحداته التخزينية. بأمر واحد، يمكنك إنشاء وبدء جميع الخدمات المحددة في تكوينك.

بالنسبة لووردبريس، هذا يعني أنه يمكنك تجميع:

  • ووردبريس نفسه: يعمل في حاويته الخاصة بإصدار PHP وخادم ويب محدد.
  • قاعدة بيانات: تعمل في حاوية منفصلة ومخصصة (مثل MySQL أو MariaDB).
  • أي خدمات أخرى ضرورية: مثل طبقات التخزين المؤقت (Redis، Memcached) أو الأدوات المتخصصة.

يقدم هذا النهج العديد من المزايا الرئيسية:

  • الاتساق: يتم استخدام نفس صورة الحاوية عبر جميع البيئات، مما يلغي مشكلات "إنه يعمل على جهازي".
  • العزل: ووردبريس وقاعدة بياناته معزولان، مما يمنع التعارض مع التطبيقات الأخرى على نفس المضيف.
  • قابلية النقل: انقل مكدس ووردبريس بالكامل بسهولة بين أجهزة مختلفة أو مزودي سحابة.
  • الكفاءة: تشترك الحاويات في نواة نظام التشغيل المضيف، مما يجعلها أخف وأسرع بكثير من الأجهزة الافتراضية التقليدية.
  • الإدارة المبسطة: يبسط Docker Compose بدء وإيقاف وإدارة مكدس ووردبريس بالكامل.
  • التحكم في الإصدار بسهولة: جرب إصدارات PHP مختلفة أو تحديثات ووردبريس الأساسية ببساطة عن طريق تغيير صورة الحاوية.

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

دعنا نمر بإعداد موقع ووردبريس أساسي باستخدام Docker Compose. سيتضمن هذا المثال حاوية ووردبريس وحاوية قاعدة بيانات MySQL.

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

  1. تثبيت Docker: قم بتنزيل وتثبيت Docker Desktop لنظام التشغيل الخاص بك من موقع Docker الرسمي.
  2. تثبيت Docker Compose: عادةً ما يتم تضمين Docker Compose مع Docker Desktop. يمكنك التحقق عن طريق تشغيل docker-compose --version في الطرفية الخاصة بك.

الخطوة 1: إنشاء مجلد المشروع

أنشئ مجلدًا جديدًا لمشروع ووردبريس الخاص بك. انتقل إلى هذا المجلد في الطرفية الخاصة بك.

mkdir my-wordpress-site
cd my-wordpress-site

الخطوة 2: إنشاء ملف docker-compose.yml

داخل مجلد مشروعك، أنشئ ملفًا باسم docker-compose.yml. سيحدد هذا الملف خدماتنا.

version: '3.8'

services:
  db:
    image: mysql:8.0
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: your_root_password
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress_user
      MYSQL_PASSWORD: wordpress_password
    networks:
      - wordpress_network

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports: 
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress_user
      WORDPRESS_DB_PASSWORD: wordpress_password
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wp-content:/var/www/html/wp-content
    networks:
      - wordpress_network

volumes:
  db_data:

networks:
  wordpress_network:
    driver: bridge

شرح ملف docker-compose.yml:

  • version: '3.8': يحدد إصدار تنسيق ملف Docker Compose.
  • services:: يحدد الحاويات التي تشكل تطبيقك.
    • خدمة db:
      • image: mysql:8.0: يستخدم صورة MySQL 8.0 الرسمية من Docker.
      • volumes: - db_data:/var/lib/mysql: ينشئ وحدة تخزين مسماة db_data للاحتفاظ ببيانات قاعدة بياناتك. هذا أمر بالغ الأهمية حتى لا تُفقد بياناتك عند إعادة تشغيل الحاوية.
      • restart: always: يضمن إعادة تشغيل الحاوية تلقائيًا إذا توقفت أو أعيد تشغيل Docker daemon.
      • environment:: يضبط متغيرات البيئة لـ MySQL، وتكوين كلمة مرور الجذر، واسم قاعدة البيانات، والمستخدم، وكلمة المرور.
      • networks: - wordpress_network: يربط هذه الخدمة بشبكة مخصصة.
    • خدمة wordpress:
      • depends_on: - db: يضمن بدء تشغيل خدمة db قبل خدمة wordpress.
      • image: wordpress:latest: يستخدم صورة ووردبريس الرسمية من Docker (التي تتضمن Apache).
      • ports: - "8000:80": يربط المنفذ 8000 على جهازك المضيف بالمنفذ 80 داخل الحاوية. ستصل إلى ووردبريس عبر http://localhost:8000.
      • restart: always: يضمن إعادة تشغيل حاوية ووردبريس تلقائيًا.
      • environment:: يقوم بتكوين ووردبريس للاتصال بخدمة db باستخدام بيانات الاعتماد المحددة مسبقًا.
      • volumes: - ./wp-content:/var/www/html/wp-content: يقوم بتحميل مجلد wp-content المحلي الخاص بك إلى الحاوية. هذا يسمح لك بإدارة السمات والإضافات والتحميلات مباشرة من جهازك المضيف ويضمن استمرارها.
      • networks: - wordpress_network: يربط هذه الخدمة بنفس الشبكة المخصصة لقاعدة البيانات.
  • volumes:: يعلن عن وحدات التخزين المسماة التي تستخدمها الخدمات.
  • networks:: يحدد شبكة الجسر المخصصة للتواصل بين الحاويات.

ملاحظة أمنية هامة: استبدل your_root_password و wordpress_password وما إلى ذلك بكلمات مرور قوية وفريدة لبيئات الإنتاج الخاصة بك. بالنسبة للتطوير، هذه مقبولة، ولكن لا تقم أبدًا بتضمين بيانات اعتماد حساسة مباشرة في نظام التحكم في الإصدار.

الخطوة 3: بدء تشغيل الحاويات

افتح الطرفية الخاصة بك في مجلد my-wordpress-site وقم بتشغيل الأمر التالي:

docker-compose up -d
  • up: ينشئ ويبدأ الحاويات.
  • -d: يشغل الحاويات في وضع منفصل (في الخلفية).

سيقوم Docker بتنزيل الصور الضرورية (إذا لم تكن لديك محليًا) وبدء تشغيل حاويات ووردبريس و MySQL الخاصة بك. قد يستغرق هذا بضع دقائق في المرة الأولى.

الخطوة 4: الوصول إلى موقع ووردبريس الخاص بك

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

الخطوة 5: إدارة موقع ووردبريس الخاص بك

  • إيقاف الحاويات:

    docker-compose down
    

    يقوم هذا بإيقاف وإزالة الحاويات والشبكات ووحدات التخزين (ما لم تحدد وحدات تخزين مسماة مثل db_data التي تستمر).

  • الإيقاف دون إزالة:

    docker-compose stop
    
  • البدء مرة أخرى:

    docker-compose up -d
    
  • عرض السجلات:

    docker-compose logs -f wordpress
    docker-compose logs -f db
    
  • الوصول إلى shell حاوية ووردبريس:

    docker-compose exec wordpress bash
    

    هذا مفيد لتشغيل أوامر WP-CLI أو تصحيح الأخطاء.

اعتبارات متقدمة وأفضل الممارسات

  • تخصيص wp-config.php: تقوم صورة ووردبريس الرسمية بحقن متغيرات البيئة في wp-config.php. إذا كنت بحاجة إلى إضافة ثوابت أو تكوينات مخصصة، يمكنك إنشاء ملف wp-config.php في جذر مشروعك وتحميله كوحدة تخزين:

    # ... في ملف docker-compose.yml الخاص بك ...
    volumes:
      - ./wp-config.php:/var/www/html/wp-config.php
      - ./wp-content:/var/www/html/wp-content
    # ...
    

    تأكد من أن ملف wp-config.php الخاص بك لا يزال يحدد DB_HOST و DB_USER و DB_PASSWORD و DB_NAME لتتناسب مع متغيرات بيئة Docker Compose الخاصة بك.

  • استخدام إصدار ووردبريس محدد: بدلاً من wordpress:latest، يمكنك تحديد إصدار مثل wordpress:6.4.3 لتحكم أفضل.

  • البيانات المستمرة: تضمن وحدة التخزين db_data استمرارية قاعدة بياناتك. يضمن تحميل ./wp-content استمرارية السمات والإضافات والتحميلات الخاصة بك وسهولة الوصول إليها.

  • الأمان: للإنتاج، فكر في استخدام صورة قاعدة بيانات أكثر قوة (مثل خدمة قاعدة بيانات مُدارة) وقم بتأمين بيانات الاعتماد الخاصة بك بعناية. تجنب تضمين كلمات المرور مباشرة في ملف docker-compose.yml الخاص بك إذا كان في نظام التحكم في الإصدار؛ استخدم ملفات البيئة (.env) بدلاً من ذلك.

  • الأداء: بالنسبة للمواقع ذات حركة المرور العالية، قد ترغب في استكشاف خدمات إضافية مثل Redis للتخزين المؤقت للكائنات، والتي يمكن أيضًا إضافتها كخدمة في ملف docker-compose.yml الخاص بك.

  • عمليات النشر للإنتاج: للإنتاج، ستقوم عادةً بنشر هذه الحاويات إلى مزود سحابة (AWS، GCP، Azure، DigitalOcean) باستخدام Docker Swarm أو Kubernetes أو خدمات الحاويات المُدارة. يعمل ملف docker-compose.yml كأساس.

مستقبل البنية التحتية للاستضافة وووردبريس

مع تطور مشهد الاستضافة، أصبحت اتجاهات مثل تخزين NVMe لـ I/O أسرع، والحوسبة الطرفية لتقليل زمن الوصول، والحلول المدعومة بالذكاء الاصطناعي للتحسين والأمان ذات أهمية متزايدة. الحاويات، المدعومة بـ Docker، هي تقنية أساسية تمكن العديد من هذه التطورات. إنها توفر المرونة وقابلية النقل اللازمة للاستفادة من نماذج البنية التحتية الجديدة.

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

خاتمة

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

Sources (5)