וורדפרס על docker

בוני אתרי וורדפרס? נסו את העולם המופלא של docker כדי להרים מיידית וורדפרס על כל מחשב ומחשב. היתרונות הם עצומים: אפשר להרים לא מעט סביבות תוך שניות עם גרסאות PHP שונות וגרסאות מסד נתונים שונות. הסביבה התקלקלה? משהו התחרבש? מורידים ומעלים שוב.

במאמר הקודם למדנו על docker compose לעבודה עם סביבות מורכבות. במקרה הזה וורדפרס היא סביבה מורכבת. מקום אחד שבו אנו מריצים את ה-PHP ומקום שני שבו אנו מריצים את ה-MySQL. בדוגמה במאמר הקודם אנו בנינו PHPMyAdmin ובדוגמה כאן אנו נבנה וורדפרס. העקרון הוא אותו עקרון. קובץ compose שבו מוגדרות שתי הסביבות.

יוצרים תיקיה במחשב ומכניסים לתוכה קובץ בשם docker-compose.yml. ניגשים לחלק של וורדפרס באתר של docker ומאתרים את קובץ ה-compose שמתאים לנו. 

version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'

מה שמעניין פה יותר מהכל הוא משתני הסביבה שמפורטים ב-environment. אני חושב שאין צורך להסביר עליהם יותר מדי. רק חשוב להזהיר שאם הדוקר שלכם יושב על סביבה חיצונית (לא סביבת פיתוח) אז זה רעיון ממש ממש רע להשתמש בססמה נוסח “examplepass” בסביבת פרודקשן.

מה הבעיה עם הקובץ הזה? שהוא יעבוד מעולה, אבל יהיה לנו קשה לגשת אל קבצי הוורדפרס כדי להוסיף/לערוך/לשנות אותם. בסופו של דבר אנחנו צריכים לעבוד על תבניות או תוספים. איך עושים את זה? תוספת קטנה שקושרת בין הקבצים של המכונות השונות לדיסק הקשיח שלנו. איך עושים את זה? עם תוספת קטנה לקובץ ה-compose המקורי:

version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    # Keep your data
    volumes: 
      - ./site:/var/www/html/

  db:
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    # Keep your data
    volumes: 
      - ./db:/var/lib/mysql

בגדול, תחת ה-volumes יש את ההגדרה. ראשית התיקיה המקומית (יחסית לקובץ ה-compose) ושנית ההגדרה בתוך המכונה. כך למשל:

./site:/var/www/html/

אומר שהתיקיה site שתהיה בתיקיה שבה יש את קובץ ה-compose במחשב שלנו, תהיה בעצם תיקית ה-var/www/html של המכונה שמחזיקה את קבצי הוורדפרס. הכי קל בעולם. כשנריץ את קובץ ה-compose הוא יצור את התיקיה וגם יאכלס אותה בקבצי הוורדפרס שאותם הוא יוריד.

זה גם נותן לנו persistence.  כלומר גם אם נכבה את דוקר ואת המחשב ואחר כך נרים את הכל מחדש – הקבצים יישארו והמידע יישאר. 

כדאי תמיד להשאר מעודכנים! הרשמו לעדכונים של האתר במייל! - המייל יישלח כל יום ראשון בעשר בבוקר ויכיל אך ורק את המאמרים שהתפרסמו באינטרנט ישראל. ללא ספאם, ללא הצפות, ללא בלגנים. אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂

אהבתם? לא אהבתם? דרגו!

לא אהבתי בכלללא אהבתיבסדראהבתיאהבתי מאוד (2 הצבעות, ממוצע: 5.00 מתוך 5)

תגיות: פורסם בקטגוריה: docker

יאללה, שתפו :)

אל תשארו מאחור! יש עוד מה ללמוד!

7 comments on “וורדפרס על docker
  1. יהודה דויטש הגיב:

    תיקון קטן:
    כל הקוד של וורדפרס נמצא כבר בתוך ה-docker image, כך שטעינת התיקייה site לתוך /var/www/html מונע אפשרות לשדרג בהמשך או כרגע אם המטרה היא לצרכי בדיקות.

    מה שעדיף לעשות, הוא רק למפות את ./site-content:/var/www/html/wp-content, זה יאפשר להתעסק רק עם התוכן המשתנה של וורדפרס מבלי לטעון לתיקייה הנוכחית את כל קוד המקור של וורדפרס.

    ועוד משהו קטן, כדאי תמיד לציין tag, כך שאם אתה רוצה לעבוד על גרסה כלשהי של וורדפרס 4.9 שים wordpress:4.9, כמובן שאפשר להיות ספציפיים יותר, אבל גם אם הכוונה היא לעבוד על ה-latest, כדאי לציין גם את זה.

  2. שלמה הגיב:

    כמה זה בטוח להרים db כמו כאן על דוקר? ראיתי בהרבה מקומות הסתייגויות… נדמה לי שגם בעושים תוכנה דיברו על זה.

    אתה בעצם שומר על הדיסק את התוכן של הdb ככה שאם הקונטיינר יפול תוכל לשחזר אותו?
    אני מתייחס לשורה של – ./db:/var/lib/mysql

    • כפיר הגיב:

      גם בדטאבייס לא ״דוקרי״ התוכן נשמר בדיסק. בדוגמא כאן נעשה מיפוי בין הקבצים בתוך הדוקר קונטיינקר לתיקיה במחשב המארח, ככה שגם מחיקה של הקונטיינר תאפשר העלאה של קונטיינר חדש עם אותם הנתונים.
      יכול להעיד מנסיוני שמסדי נתונים על דוקר זה דבר נפלא ופשוט, אבל בהחלט דורש קצת יותר הגדרות בפרודקשן (בעיקר בהיבטי זיכרון)

  3. ג'וני הגיב:

    היי
    תותחים..ממש עניני ומופרט…
    שאלה קטנה..מה ההבדל בין שמירה שביצעתם ל pvc..?
    תודה

  4. אודי הגיב:

    שאלה – נניח שעד עכשיו השתמשתי ב-xampp ויש לי התקנת וורדפרס בתיקיית ה-htdocs עם DB בתיקיה הרלוונטית של xampp והכל.

    האם אני יכול ליצור קובץ docker-compose.yml עם הנתונים התואמים להתקנה הקיימת והוא יריץ לי אותה בקונטיינר?

  5. יותם הגיב:

    תודה על ההדרכה הפשוטה והנהירה.
    משום מה כל פעם שהמחשב עושה אתחול הוורדפרס עולה כ”לא מותקן”, ורק אחרי הורדה והפעלה מחדש של הדוקר חוזרת הגרסה המותקנת. למישהו יש הסבר לתופעה?

כתיבת תגובה

האימייל לא יוצג באתר.

רישום