סביבת פיתוח וורדפרס מקומית עם Docker ו-DDEV
אם אתם בונים אתרי וורדפרס, יש סיכוי טוב שכבר יש לכם סביבה מקומית כלשהי. LocalWP, XAMPP, אולי MAMP מהימים ההם. הן עובדות. אבל ברגע שהאתר עולה לשרת אמיתי, מתחיל הכאב המוכר: משהו ש”עבד אצלי” פתאום נשבר. גרסת PHP אחרת. תוסף שמתנהג שונה. שגיאה שאי אפשר לשחזר מקומית.
המדריך הזה מציג סביבת פיתוח וורדפרס מקומית שאפשר להתאים לגרסאות המרכזיות בשרת, לשמור בקוד ולהקים מחדש בפקודה אחת. היא לא משכפלת את סביבת הייצור לחלוטין, אבל היא מצמצמת פערים ומקלה לשחזר תקלות. אני עובד בה יום-יום, והיא חסכה לי שעות של ניפוי באגים. הכלים הם Docker כמנוע קונטיינרים ו-DDEV כשכבת הניהול מעליו.
זה לא מדריך לסביבה הראשונה שלכם. הוא מיועד למי שכבר מקודד קצת, מכיר שורת פקודה ברמה בסיסית ורוצה סביבת עבודה שאפשר לשחזר. אם אתם בונים את האתר הראשון שלכם, התחילו במדריך לבניית אתר WordPress.
למה סביבה מקומית “רגילה” לא מספיקה
הבעיה עם רוב הכלים הקלים היא לא האיכות שלהם, אלא המרחק מהשרת.
LocalWP ו-XAMPP נותנים לכם וורדפרס שרץ, אבל הגרסאות והגדרות השרת שלהם לא בהכרח תואמות לאלה שבייצור. כל פער כזה הוא מקום שבו האתר יכול להתנהג אחרת. רוב הזמן זה עובר חלק. ואז יום אחד אתם מעלים לאוויר, ומשהו שעבד מקומית פשוט מסרב לעבוד.
זה ה”עובד אצלי” הקלאסי. הוא לא קסם רע, אלא פער בין הסביבות. התאמת גרסאות PHP, מסד הנתונים וסוג שרת האינטרנט מצמצמת אותו, אך עדיין יכולים להיות הבדלים בהרחבות, ב-cache, ברשת ובמערכת ההפעלה.
מה הופך סביבה ל”מקצועית”
שלושה דברים עוזרים לסביבה מקומית להתקרב לייצור:
- מבודדת. כל פרויקט חי בקופסה משלו, נקייה וחד-פעמית. אין התנגשויות בין גרסאות, אין “התקנתי משהו לפרויקט אחד וזה שבר אחר”.
- ניתנת להתאמה לייצור. אפשר לבחור גרסת PHP, סוג מסד נתונים וסוג שרת אינטרנט שקרובים למה שרץ בשרת האמיתי. זו אינה זהות מלאה, אבל זו נקודת פתיחה טובה יותר לאיתור פערים.
- מונחית-קוד. את כל ההגדרות מתארים בקובץ, לא בלחיצות בממשק. זה אומר שאפשר לשחזר את הסביבה, לשתף אותה, ולהריץ אותה על מחשב אחר בלי לזכור מה לחצתם לפני חצי שנה.
DDEV נותן את שלושת אלה כברירת מחדל.
Docker בשתי דקות
כדאי להבין מה רץ מתחת, גם אם בפועל כמעט לא תיגעו ב-Docker ישירות.
Docker מריץ קונטיינרים: סביבות מבודדות וקלות שחולקות ליבת Linux שמספק מנוע הקונטיינרים, אבל מתנהגות כאילו הן מכונה נפרדת. ב-macOS וב-Windows הליבה הזו רצה בתוך מכונת Linux שמנהל ה-Docker provider. במקום להתקין PHP ו-MySQL ישירות על המחשב שלכם, הם רצים בתוך קונטיינרים.
אתם לא מגדירים את Docker ביד. לא תכתבו קובצי הגדרה, לא תזכרו פקודות. DDEV עושה את כל זה בשבילכם. Docker הוא רק המנוע מתחת למכסה המנוע. מספיק לדעת שהוא שם.
למה דווקא DDEV
DDEV הוא כלי קוד פתוח שמקים ומנהל סביבת פיתוח מקומית מבוססת קונטיינרים. את הגדרות הפרויקט הוא שומר בקבצים שאפשר להכניס ל-Git ולשתף עם הצוות.
אפשר להריץ Docker לבד, אבל בלי שכבה מעליו תמצאו את עצמכם כותבים קובצי docker-compose.yml ביד ומתחזקים אותם לכל פרויקט. זה עובד, אבל זו עבודה. DDEV מייצר את כל זה אוטומטית: stack וורדפרס תקני, עם HTTPS וכלים, בפקודה אחת.
ומול הכלים הקלים כמו LocalWP? שם אתם מקבלים נוחות, אבל מאבדים שליטה. DDEV נותן לכם:
- שליטה אמיתית בגרסאות, בוחרים PHP ומסד נתונים שתואמים לשרת.
wp-cliמובנה, בלי להתקין כלום.- סביבה ניידת, אותה הגדרה רצה על כל מחשב, ונשמרת ב-git לצד הקוד.
אני לא מזלזל ב-LocalWP. הוא קל, מהיר ומצוין להתחלות מהירות. כשחשובה לכם שליטה בגרסאות והגדרה שנשמרת לצד הקוד, DDEV נותן יותר אפשרויות.
דרישות מקדימות והתקנה
צריך שני דברים: Docker provider שמריץ את הקונטיינרים, ו-DDEV שמנהל את סביבת הפיתוח.
מנוע הקונטיינרים
Docker Desktop (נפתח בלשונית חדשה)
הוא אפשרות פשוטה ב-macOS וב-Windows, אך DDEV תומך גם ב-OrbStack, ב-Colima ובמנועים נוספים. ב-Windows עם WSL2 אפשר להשתמש ב-Docker CE בתוך WSL2, וזו האפשרות המומלצת כיום בתיעוד של DDEV.
לפי תנאי הרישוי של Docker Desktop (נפתח בלשונית חדשה), השימוש ללא תשלום מותר לשימוש אישי, ללימודים, לפרויקטים לא מסחריים בקוד פתוח ולעסקים עם פחות מ-250 עובדים וגם פחות מ-10 מיליון דולר בהכנסה שנתית. ארגון שחורג מאחד הספים נדרש למנוי בתשלום. התנאים עשויים להשתנות, לכן בדקו אותם לפני שימוש מסחרי.
רוב העבודה תהיה בשורת הפקודה, אבל מנוע הקונטיינרים שבחרתם עדיין צריך לרוץ ברקע. שורת הפקודה מדברת איתו, היא לא מחליפה אותו.
את DDEV
ההתקנה משתנה מעט בין מערכות ההפעלה:
- macOS: הדרך הפשוטה היא Homebrew (ראו את בלוק הקוד מתחת), לאחר התקנת Docker provider נתמך.
- Windows: המתקין הרשמי תומך ב-Docker CE בתוך WSL2, ב-Docker Desktop ובמצב Windows מסורתי. עקבו אחרי הוראות ההתקנה העדכניות של DDEV (נפתח בלשונית חדשה), מפני שהן משתנות בין המצבים.
brew install ddev/ddev/ddevmkcert -installבדיקת שפיות
לפני שממשיכים, ודאו ששני הדברים במקום (ב-Windows, מתוך טרמינל ה-WSL2):
ddev --versionאם קיבלתם מספר גרסה ומנוע הקונטיינרים רץ ברקע, אתם מוכנים.
מקימים את אתר הוורדפרס הראשון
עכשיו לחלק המהנה. נקים אתר וורדפרס מלא בכמה פקודות.
תיקיית הפרויקט וההגדרה
צרו תיקייה לפרויקט והיכנסו אליה:
mkdir my-wordpress-site && cd my-wordpress-siteddev config --project-type=wordpress --docroot=.הפקודה ddev config שואלת כמה שאלות (סוג הפרויקט, תיקיית השורש) ויוצרת תיקיית .ddev עם כל ההגדרות. את התיקייה הזו כדאי לשמור ב-git, היא מה שהופך את הסביבה לניתנת לשחזור.
מעלים את הסביבה
ddev startבפעם הראשונה זה ייקח רגע: DDEV מוריד את ה-images, מקים את הקונטיינרים ומנפיק תעודת HTTPS מקומית. לאחר mkcert -install רוב הדפדפנים יבטחו בה אוטומטית; דפדפנים או התקנות חריגות עשויים לדרוש הגדרה נוספת. כשהתהליך מסתיים, תקבלו את כתובת האתר המקומי.
מתקינים את וורדפרס
מכאן wp-cli כבר עובד דרך DDEV, בלי שהתקנתם אותו בנפרד:
ddev wp core downloadddev wp core install \ --url='$DDEV_PRIMARY_URL' \ --title='My WordPress Site' \ --admin_user=admin \ --prompt=admin_passwordהמשתנה $DDEV_PRIMARY_URL מקבל את כתובת הפרויקט מתוך DDEV. הפרמטר --prompt=admin_password מבקש את הסיסמה בזמן ההרצה, כך שהיא לא נשמרת בפקודה ובהיסטוריית ה-shell. אפשר גם לפתוח את האתר בדפדפן ולעבור על אשף ההתקנה הרגיל של וורדפרס.
הרגע שהכל מתחבר
ddev launchהדפדפן נפתח על האתר המקומי. וורדפרס רץ, על HTTPS, על גרסת PHP שבחרתם, מבודד ונקי. הקמתם סביבת פיתוח מקצועית בכמה דקות.
כדי לראות את כל הפרטים של הפרויקט בכל רגע (כתובות, פורטים, פרטי מסד הנתונים):
ddev describeלאן ממשיכים מכאן
יש לכם עכשיו סביבה מוגדרת בקוד שאפשר להקים מחדש. מכאן אפשר לעבור לעבודה היומיומית עם DDEV: להריץ WP-CLI, לייבא ולייצא מסדי נתונים, לנהל כמה אתרים במקביל ולטפל בתקלות נפוצות.
אם אתם בונים את האתר הראשון שלכם, סביבה עם Docker עלולה להוסיף מורכבות שלא נחוצה עדיין. התחילו מהמדריך לבניית אתר WordPress וחזרו לכאן כשתרצו סביבת פיתוח שנשמרת לצד הקוד.
תיקיית .ddev היא גם בסיס לשיתוף סביבת העבודה בצוות ולחיבור שלה בהמשך ל-Git ולתהליך פריסה מסודר.
תגובות
טוען תגובות…