היה לי צורך להתקין מכולה (container) כדי להריץ בדיקות תקינות קוד על תוספי וורדפרס, ומאחר שאני עובדת על PC לא יכולתי להריץ את הבדיקות עליו. הקולגה שלי, שי גובר, כתב לי הוראות התקנה והרצה, וכדי שיהיה לי לרפרנס בעתיד וגם לשם זיכוי הרבים, אני משתפת אותן פה.
מה צריך שיהיה במחשב לפני שמתחילים?
- Docker
- Windows Powershell – זה cmd (שורת פקודה) משוכלל
- צריך להוריד את docker-compose.yaml (זהו קובץ ההגדרות של המכולה)
- מורידים את קובץ ה-Docker. זו מכולה ששי יצר על בסיס המכולה של Arch ב-dockerhub
ההגדרות שצריך להגדיר לפני שמתחילים את המכולה
הגדרת תיקיית קבצים משותפת בין מחשב הווינדוס למכולה
יוצרים תיקייה שבתוכה יהיו הקבצים שהמכולה תבדוק. אני יצרתי תיקייה בשם data בכונן D.
מכניסים את שני הקבצים, docker-compose.yml
ו-Dockerfile
לתיקייה הזאת.
מדליקים את היישומון של docker (שהורדנו בסעיף 1)
כדי שאכן נוכל לשתף את המכולה בתיקיות ממחשב הווינדוס שלנו צריך להגדיר דרך ה-docker תיקיה משותפת.
כאן יש הוראות פשוטות איך לעשות את זה. זה מתחיל מפתיחת ה-settings של ה-docker ושם בחירת התפריט shared files. יש לציין שה-UI של ה-docker השתנה ועכשיו הפריט נמצא תחת התפריט של resources.
אם אתם עדיין לא רואים את הפריט, ראו פתרון אפשרי בסעיף הבא.
יתכן שהפריט לא מופיע כי מאופשר אצלכם WSL.
הפתרון הוא להסיר את ה-V מהצ’ק בוקס “Use the WSL 2 based engine”.
הבעיה היא שיתכן שתקפוץ לכם הודעת שגיאה שאי אפשר לעשות זאת כי לא מאופשר לכם Hyper-V. בפוסט הזה יש כמה הצעות לפתרון הבעיה. לכאורה אחרי שתבצעו את האיפשור הזה, תוכלו לחזור ל-docker, לבטל את ה-wsl ולשתף תיקיות.
הגדרות המכולה בקובץ ה-yaml
מה אתם צריכים להגדיר:
פותחים את הקובץ בעורך טקסט (למשל notepad++
).
docker-compose.yaml
ומשנים לנתיב אמיתי בתוך אותה תיקייה. אני למשל יצרתי תיקיית phpcs בתוך תיקיית data, וכותבים את הנתיב המלא:
volumes:
- "/d:/data/phpcs/:/data"
הסברים על שאר ההגדרות (אל תיגעו בהן. גם לא חייבים להבין. זה רק למי שרוצה להבין):
- שתי השורות האלה חייבות להימצא כדי שהפקודה שבונה את המכולה תפעל. הפקודה מכילה את הפרמטר -d שאומר להריץ אותה ברקע (detached), ובלי שתי השורות האלה הפקודה תיתקע.
tty: true
stdin_open: true
- MEMORY: צריך להגדיר לפי ה-ram הפנוי במחשב שלכם. 2048M מניח בברירת מחדל 16GB+של PC RAM. עבור 8GB השתמשו ב-1024M. הערה: phpcs נוטה להיות רעבתני מבחינת זיכרון.
- EXECUTION: זמן ריצה מקסימלי בשניות. ברירת מחדל: 500 שניות.
- IMPUT_TIME: זמן מקסימלי בשניות שהסורק יקרא את הקוד. ברירת מחדל: 300 שניות.
הערה: שתי ההגדרות האחרונות עוזרות להימנע מלולאות אינסופיות.
הקמת המכולה
פותחים את powershell ועוברים לתיקייה שבה נמצאים שני הקבצים האלה (אצלי: D:data)
מריצים את הפקודה שבונה את המכולה:
docker-compose up --build -d
כדי להריץ את הפקודות הבאות צריך את ה-CONTAINER ID של phpcs. בשביל זה מריצים את הפקודה
docker container ls
אחרי זה מפעילים את ה-bash בקונטיינר, כך שלמעשה נהיה בשורת הפקודה בתוך המכולה:
docker exec -ti <CONTAINERID> /bin/bash
הערה: המכולה רצה עם משתמש שאינו root. אם אתם צריכים root, תשתמשו ב-sudo.
הרצת פקודות הסקירה:
סוף סוף הגענו לדבר שלשמו התכנסנו.
מעתיקים את הקוד שרוצים לבדוק לתוך התיקייה שהגדרנו בתחילת הפוסט.
ב-PowerShell עושים cd לתוך התיקייה שיצרנו בתחילת הפוסט, ולתוכה הכנסנו את כל התוספים ו/או התבניות שאנחנו מעוניינים לבדוק, ומריצים את 3 פקודות ה-phpcs. אלה הפקודות הנתמכות כרגע:
- phpcs – עצמו מותקן באמצעות arch AUR
- PHPCompatibility v9.3.5
- PHPCompatibilityWP v2.1.2
- PHPCompatibilityParagonie v1.3.1. Required by PHPCompatibilityWP.
- phpcs-security-audit latest.
אלה הפקודות שאפשר להריץ, וה-alias-ים שלהם:
- phpsec for phpcs
--colors -p . --extensions=php,inc,lib,module,info --standard=Security
- phpver for phpcs
--colors -p . --standard=PHPCompatibility --runtime-set testVersion 7.4
- phpwpver for phpcs
--colors -p . --standard=PHPCompatibilityWP --runtime-set testVersion 7.4
אם רוצים לשמור את תוצאות הפקודות בתוך קבצים, מוסיפים בסוף הפקודה את סימן הגדול (<) ואחריו נתיב ושם הקובץ. אם כותבים רק את שם הקובץ זה ייווצר בתיקייה שבה אנחנו נמצאים.
phpsec > security.log
