הקדמה
בעולם הפיתוח, יצירת סביבה מקומית של וורדפרס עם Docker שדומה לסביבת הייצור (Production) יכולה להיות אתגר לא קטן. כאן נכנס לתמונה Docker. דוקר הוא כלי המאפשר הרצה של תוכנות בתוך קונטיינרים, שהם סביבות מבודדות המאפשרות להפעיל יישומים עם כל התלויות שלהם (כגון גרסאות PHP, MySQL, Apache וכו') מבלי להשפיע על המערכת המארחת.
למה צריך Docker?
דוקר מאפשר למפתחים להקים במהירות סביבה מדויקת וסטנדרטית (עם גרסאות ספציפיות ומדוייקות), שבאמצעותה ניתן לפתח, לבדוק ולהעלות קוד לפרודקשן. היתרון המרכזי בדוקר הוא שבזכות הקונטיינרים, אפשר להבטיח שהקוד יעבוד אותו הדבר בכל סביבת עבודה – מהמחשב המקומי שלך ועד השרת בענן.
יתרונות של סביבה מקומית של וורדפרס עם Docker:
- תאימות בין סביבות: קונטיינרים מבטיחים שכל הקוד והתלויות ירוצו בצורה זהה בכל מכונה, בין אם מדובר בסביבת פיתוח, סביבת בדיקות או סביבת ייצור.
- פשטות ונוחות: ניתן להקים סביבות בקלות באמצעות פקודות פשוטות, ולשחזר אותן על כל מכשיר.
- בידוד מלא: כל קונטיינר פועל בצורה מבודדת מהמערכת הראשית, כך שאין התנגשות עם התקנות קיימות.
- תחזוקה קלה: בעזרת קבצי
docker-compose.yaml
, ניתן להגדיר בקלות את כל השירותים
(כגון MySQL, WordPress, Adminer וכו') ולנהל אותם בצורה פשוטה.
אפשרויות אחרות לדוקר:
לפני ש-Docker הפך לפופולרי, מפתחים היו משתמשים בכלים כמו XAMPP או WAMP ליצירת סביבות פיתוח מקומיות. כלים אלו מאפשרים להפעיל שרת Apache, MySQL ו-PHP על המחשב המקומי, אך הם חסרים את היתרונות של בידוד קונטיינרים שמספק דוקר. לדוגמה:
- XAMPP/WAMP/MAMP: אלו סביבות התקנה מקומיות המאפשרות להקים שרתי PHP ו-MySQL בקלות. החיסרון המרכזי שלהן הוא שהן מתקינות את התוכנות על המערכת המארחת, מה שעלול ליצור בעיות תאימות.
- Virtual Machines (מכונות וירטואליות): פתרון נוסף הוא שימוש במכונות וירטואליות (VM) כמו VirtualBox או Vagrant. אמנם VM מספקת בידוד מלא, אך החיסרון הוא שהיא כבדה יותר בצריכת משאבים ודורשת יותר תחזוקה בהשוואה לקונטיינרים של דוקר.
באמצעות Docker ניתן להימנע מבעיות תאימות ושימוש לא רצוי במשאבי מערכת, וליהנות מפשטות ויעילות בעבודה השוטפת.
שלב 1: התקנת Docker
לפני שנוכל להתחיל, ודא ש-Docker מותקן במחשב שלך:
- גש לאתר הרשמי של Docker: https://www.docker.com/products/docker-desktop.
- הורד והתקן את Docker Desktop בהתאם למערכת ההפעלה שלך (Windows/Mac).
שלב 2: יצירת מבנה הקבצים
בתחילת העבודה, ניצור את מבנה התיקיות הדרוש עבור הסביבה שלנו. הנה המבנה שנשתמש בו:
- docker-compose.yaml
- logs/debug.log
- db/
- config/php.ini
- config/apache-config
- config/wp-config.php
- themes/my-theme/
- plugins/my-plugin/
שלב 3: יצירת קובץ docker-compose.yaml
ניצור את הקובץ docker-compose.yaml
אשר יגדיר את הסביבה. פתח את עורך הטקסט שלך והוסף את התוכן הבא:
version: '3.8'
services:
wordpress:
image: wordpress:latest
container_name: wordpress
platform: linux/amd64
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppassword
WORDPRESS_DB_NAME: wordpress
volumes:
- ./themes/my-theme:/var/www/html/wp-content/themes/my-theme
- ./plugins/my-plugin:/var/www/html/wp-content/plugins/my-plugin
- ./config/wp-config.php:/var/www/html/wp-config.php
- ./logs:/var/www/html/logs
- ./config/php.ini:/usr/local/etc/php/php.ini
- ./config/apache-config:/etc/apache2/sites-available/000-default.conf
depends_on:
- db
db:
image: mysql:5.7
container_name: db
platform: linux/amd64
restart: always
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppassword
MYSQL_ROOT_PASSWORD: rootpassword
volumes:
- ./db:/var/lib/mysql
adminer:
image: adminer
container_name: adminer
platform: linux/amd64
restart: always
ports:
- "8081:8080"
שימו לב לפרטי התחברות לבסיס נתונים לא לשכוח להחליף את הפרטי הדמו
שלב 4: יצירת wp-config.php
תיקיית core
תכיל את קובץ wp-config.php
, אשר מכיל את ההגדרות של וורדפרס. בקובץ זה יש להוסיף את ההגדרות הבאות:
<?php
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wpuser' );
define( 'DB_PASSWORD', 'wppassword' );
define( 'DB_HOST', 'db' );
$table_prefix = 'wp_';
// הפעלת דיבוג ושמירת לוגים
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', '/var/www/html/logs/log.debug' );
define( 'WP_DEBUG_DISPLAY', false );
// הגדרות נוספות
define('AUTH_KEY', '');
define('SECURE_AUTH_KEY', '');
define('LOGGED_IN_KEY', '');
define('NONCE_KEY', '');
define('AUTH_SALT', '');
define('SECURE_AUTH_SALT', '');
define('LOGGED_IN_SALT', '');
define('NONCE_SALT', '');
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
require_once(ABSPATH . 'wp-settings.php');
שלב 5: יצירת קבצי קונפיגורציה נוספים
- config/php.ini – קובץ זה יכיל הגדרות PHP מותאמות אישית (לדוגמה: זמן מקסימלי לביצוע, גודל קובץ מקסימלי להעלאה):
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
- config/apache-config – קובץ זה יכיל את ההגדרות של Apache:
<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
שלב 6: הפעלת הסביבה עם Docker
לאחר שיצרנו את כל הקבצים הדרושים, נוכל להפעיל את הסביבה באמצעות הפקודות הבאות:
- הפעלת הסביבה:
docker-compose up -d
- כדי לבדוק את הלוגים של וורדפרס:
docker-compose logs wordpress
- גישה לממשק וורדפרס: פתח דפדפן וגש לכתובת
http://localhost:8080
.
אם הכל תקין, וורדפרס יעלה ותוכל להתחיל לעבוד על התבנית והפלאגינים האישיים שלך.
- גישה לממשק Adminer לניהול בסיס הנתונים: http://localhost:8081.
שלב 7: פיתוח תבנית ופלאגינים אישיים
- תבנית אישית: תוכל לערוך את קבצי התבנית האישית שלך בתיקייה
themes/my-theme
ולראות את השינויים ישירות בסביבת וורדפרס. - פלאגינים אישיים: ניתן לפתח פלאגינים אישיים בתיקייה
plugins/my-plugin
.
שלב 8: תחזוקה ועבודה שוטפת
במידה ואתה רוצה לכבות את הסביבה:
docker-compose down
אם תרצה לבצע ניקוי מוחלט, כולל מחיקת קונטיינרים וקבצי נתונים:
docker-compose down --volumes --rmi all
סיכום והיתרונות של עבודה עם Docker
היתרון המשמעותי בעבודה בסביבה מקומית של וורדפרס עם Docker הוא שאתה יכול לעבוד על פיתוח תבניות ופלאגינים בצורה מסודרת ומבודדת, תוך שמירה על סביבה אחידה בין סביבת הפיתוח המקומית שלך לבין השרת בייצור.
למה סביבה מקומית של וורדפרס עם Docker זה טוב?
בידוד מלא ומניעת בעיות תאימות: כאשר אתה מפתח על הסביבה המקומית שלך, ייתכן שהגרסאות של PHP, MySQL, או אפילו הספריות שאתה משתמש בהן שונות מהשרת שבו האתר רץ בפועל. בעזרת Docker, אתה יכול להגדיר את הסביבה המדויקת שבה האתר שלך ירוץ בכל מקום, ולמנוע בעיות תאימות בין הסביבות.
קלות ניהול תלויות: כל התלויות (כמו גרסאות PHP, MySQL, ותוספות אחרות) מוגדרות בתוך קבצי הקונפיגורציה של Docker. זה מבטיח שצוות הפיתוח וכל מי שעובד על הפרויקט יוכל להקים את הסביבה המקומית בקלות באמצעות פקודות Docker פשוטות, ללא צורך בהתקנות מסובכות או תלויות מערכת מיוחדות.
סנכרון מלא בין תבניות ופלאגינים: Docker מאפשר לך לעבוד ישירות על קבצי התבניות והפלאגינים במערכת הקבצים המקומית שלך. כך תוכל לערוך אותם בזמן אמת ולראות את השינויים מיידית בסביבת וורדפרס המקומית שלך. הסנכרון הזה הופך את תהליך הפיתוח למהיר ואפקטיבי.
שמירה על פרויקט נקי וניהול קבצים חכמים עם Git: העבודה עם Docker מאפשרת להעלות לגיט רק את הקבצים החיוניים של הפרויקט (כגון התבנית והפלאגינים) ולהימנע מקבצים זמניים ומיותרים כמו לוגים, קבצי Cache, וקבצי תלויות זמניות. באמצעות קובץ .gitignore
שהגדרנו, אתה יכול להבטיח ש-Git יתעלם מקבצים מיותרים כמו קבצי לוגים (logs/
), נתוני בסיס הנתונים המקומיים (db/
), וקבצי תלויות מקומיות (כמו node_modules/
).
קלות בפריסה לשרת: כאשר הפרויקט מוכן לייצור, ניתן בקלות להעלות את התבנית והפלאגינים ל-Git מבלי להעלות קבצים מיותרים. זה מבטיח פרויקט נקי ומסודר שניתן לפרוס בקלות על כל שרת, ללא קבצים שיכבידו על ניהול הקוד והסביבה.
יתרון נוסף – Docker על שרת בייצור
אם תרצה להרחיב את השימוש בדוקר מעבר לסביבת הפיתוח, תוכל גם להעלות את הסביבה המבוססת דוקר לשרת בייצור (Production) וליהנות מסביבה אחידה לחלוטין, בדיוק כמו שהגדרת בסביבת הפיתוח. זה מקטין סיכונים הקשורים למעבר מסביבה אחת לשנייה ומאפשר תחזוקה נוחה יותר בעת שדרוגים ושינויים.