במאמר הקודם למדנו איך באמצעות docker compose יוצרים סביבות מורכבות. במקרה שלנו: וורדפרס. וורדפרס היא סביבה שמורכבת משני קונטיינרים. הראשון הוא של המכונה המריצה את השרת עם קבצי ה-PHP והשני הוא של המכונה שמריצה את ה-MySQL. שתיהן עובדות ומסונכרות ביחד באמצעות docker compose. שתיהן יחיו לנצח גם אם נוריד/נעלה את הקונטיינרים כי חיברנו אותן אל המחשב המארח באמצעות:
# Keep your data
volumes:
- ./site:/var/www/html/
כל זה למדנו במאמר הקודם ואפילו עשינו סרטון נאה שמדגים את הכל. אבל מה הבעיה בסרטונים כאלו? שבדוגמאות הכל נפלא ונהדר ואז אתה משתכנע ומתקין ואז בום. יש איזו תקלה שאלוהים יודע מאיפה היא הגיעה. אתה מנסה להכנס לאתר הוורדפרס או למערכת אחרת ומגלה מסך שגיאה מחריד.
תקלות יכולות לקרות. בדרך כלל ריסטרט פשוט של המחשב המארח יכול לפתור את הבעיה. אבל במידה ולא, אנחנו צריכים לבצע דיבאגינג. הלוג של הקונטיינרים, כפי שאנו רואים אותו בטרמינל, יכול לשפוך אור, אבל לא תמיד. וזה הזמן להכנס לקונטיינר ולבדוק.
אם זה אתר וורדפרס, סביר להניח שאם יש בעיה אנחנו צריכים לבדוק את הקונטיינר של וורדפרס. איך נכנסים לקונטיינר שרץ? ראשית פותחים docker CLI נוסף באותו מיקום שבו ה-compose רץ. שנית, על מנת להכנס למכונה, כותבים:
docker-compose exec wordpress bash
ברגע שהקלדנו את זה, אנחנו בקונטיינר שרץ ב-docker-compose. אנחנו לא ב'חלונות' או במערכת המארחת אלא בתוך לינוקס מלא. עכשיו אנחנו צריכים "לדבר" לינוקסית. לא כזה מסובך. ראשית, נתקין nano. עורך טקסטואלי לינוקסאי.
apt-get update && apt-get install nano
בגלל שאנחנו root, אין צורך להקליד sudo.
זה השלב שבו אנחנו צריכים ליצור php.ini שבו יש הנחיות ליצירת לוג שגיאות והדפסתו. נכנס אל היכן שהוא אמור להיות:
cd /usr/local/etc/php
ניצור ונערוך אותו באמצעות:
nano php.ini
ונקליד בתוכו את הטקסט הבא:
log_errors = On
error_log = /tmp/error.log
הדבר הבא הוא ליצור את קובץ הלוג /tmp/error.log ואת זה עושים כך:
touch /tmp/error.log && chmod 777 /tmp/error.log
זהו! הכל מוכן! עכשיו נבצע ריסטרט לשרת. אנחנו חייבים לעשות את זה כי שינינו את קובץ ה-php.ini.
/etc/init.d/apache2 restart
ברגע שאנחנו מקלידים את זה, אנו "עפים" מהמכונה. נכנס שוב אליה באמצעות:
docker-compose exec wordpress bash
ועכשיו כדי לראות את לוג השגיאות של PHP אנו יכולים פשוט להקליד:
tail -f /tmp/error.log
וזהו, מהרגע הזה כל שגיאה תראה על המסך.
אפשר כמובן לעשות כל מה שרוצים במכונה הזו או במכונה אחרת. כל מה שרוצים. הנקודה במאמר היא לא רק לבחון את שגיאות ה-PHP אלא גם לראות כמה זה קל להכנס לתוך כל קונטיינר גם עם compose ולעבוד בתוכו.
4 תגובות
א כ"כ כדי לאפשר משתמש root בקונטיינר, בטח לא בשטח, אלא רק בשלב הפיתוח. ההמלצה היא לעלות עם משתמש אחר, שיוצרים בזמן יצירת האימג', ולבטל אפשרות לsudo.
הערה חשובה. וזה נכון לגמרי.
Chmod 777
:O
למה לתת הרשאות כאלו לקובץ השגיאות? לא חשוף מדי?
כפי שכתבתי, ברגע שהורגים את הקונטיינר (או ריסט למחשב) הקובץ מת. בנוסף, הדגשתי בסרטון שמדובר בסביבת פיתוח לוקלית בלבד. פרודקשן? סיפור אחר.