וורדפרס על 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.  כלומר גם אם נכבה את דוקר ואת המחשב ואחר כך נרים את הכל מחדש – הקבצים יישארו והמידע יישאר. 

פוסטים נוספים שכדאי לקרוא

גלילה לראש העמוד