במאמרים הקודמים הסברנו על עבודה עם דוקר. ה-תשתית בה"א הידיעה בכל מה שקשור לווב (ובכלל). עם דוקר, למי שלא זוכר, אני יכול לייצר איזו תשתית שבא לי מכל מחשב בלי להתאמץ. הרסתי והחרבתי? אין בעיה. מרימים שוב.
הבעיה מתחילה כאשר אני צריך כמה קונטיינרים בו זמנית. למה צריך את זה? למשל אם אני רוצה להרים אתר וורדפרס שצריך גם שרת PHP וגם שרת שיש בו MySQL. או למשל אני צריך לבחון קובץ SQL שקיבלתי. אני צריך PHPMyAdmin שהוא ממשק ניהול ל-MySQL וכמובן שרת שיש בו MYSQL. מה אני עושה?
אני יכול להרים שני קונטיינרים באופן עצמאי כמו חמוריקו, אבל בסופו של דבר דוקר === פשטות ואני לא רוצה להזיע עם הוראות הכנה מסובכות בכל פעם שאני רוצה להרים משהו. גם אם זה משהו שמצריך כמה קונטיינרים. הפתרון? docker compose file. קובץ הגדרות בפורמט yaml קטן ונחמד שניתן להרצה בשורה אחת.
מי שרוצה לראות ממש דוגמה מעשית מוזמן לסרטון הקצר שהכנתי יחד עם עומרי, הבן שלי, שהוא לפני גיוס אבל כבר מתכנת באלמנטור ובונה תשתיות שמשמשות את הבדיקות האוטומטיות שלהם. מה שהוא שכח בדוקר, אני עוד לא למדתי.
בגדול, יוצרים קובץ בשם docker-compose.yml ומציבים אותו בתיקיה כלשהי (לא משנה איזו תיקיה). הקובץ נראה כך:
version: '2'
# כאן יש לנו את כל הקונטיינרים
services:
# קונטיינר של מסד נתונים
db:
image: mysql
environment:
# Environment variable
MYSQL_ROOT_PASSWORD: password
ports:
- "3306:3306"
# PHPMyAdmin container
phpmyadmin:
image: phpmyadmin/phpmyadmin
depends_on:
- db
ports:
- "8080:80"
הקובץ הוא די פשוט. הגרסה היא הגרסה של דוקר. בדרך כלל זה 2 או 3 (אלא אם כן אתם צריכים משהו מורכב). ואז מגיע services שבו אנחנו מפרטים את כל הקונטיינרים שאנחנו צריכים. במקרה הזה שניים. הראשון הוא db. שם אנו מפרטים את שם ה-image שזהה ל-image הרשמי (יכול להיות גם image שיצרנו כפי שהסברנו במאמר הזה). ואת משתני הסביבה שהקונטיינר צריך. במקרה הזה, כיוון שכאשר מרימים את הקונטיינר צריך לכתוב:
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql
אנחנו צריכים להוסיף MYSQL_ROOT_PASSWORD ואת הערך שאנחנו רוצים לתת לו.
אם יש לנו תלויות, אנו מוסיפים אותן ל-depends_on. במקרה הזה, ה-phpmyadmin תלוי ב-db כי בלעדיו אין לו זכות קיום.
אחרי שסיימנו ליצור את קובץ ה-compose, אנו נפתח את הקונסולה של דוקר, שעליה למדנו במאמרים הקודמים ונכתוב docker-compose up
וזהו, הכל למעלה! אפשר פשוט להתחבר ל-IP של הדוקר עם הפורט של phpmyadmin ולראות איך מצליחים לעבוד. זה עד כדי כך פשוט. הכניסה היא עם root ושם המשתמש הוא מה שהגדרנו בקובץ ההגדרות. זה הכל. ומי שצריך הרחבה? יש בסרטון.
עבודה עם docker compose היא באמת פשוטה מאוד. אני יודע שיש נטייה לתת ל-devops להתעסק עם זה אבל חבל. מדובר בתשתית ממש פשוטה, קלה ונעימה שממש חוסכת זמן רב בעבודה. גם על תשתיות מסובכות יחסית.
ועוד הערה: אל תשתמשו בקובץ שאנחנו מסבירים עליו פה לסביבת פרודקשן כמובן. שם משתמש root וסיסמה password זה לא רעיון טוב לשרת שפתוח לרשת החיצונית.
6 תגובות
אני עוקב אחרי הבלוג (ובעוד פלטפורמות) כבר כמה זמן, אבל כנראה פיספסתי את סדרת הדוקרים.
פשוט, מובן ועושה סדר בדברים.
תודה לך ולבן!!
המלצה שלי שכאשר עושים docker-compose up להוסיף את הפלאג -d על מנת להימנע מדפסות דיבאג מיותרות והתהליך ירוץ ברקע
docker compose זה באמת אחלה דבר. רק שככלל, התעשיה פחות או יותר בחרה בקוברנקיס (AKA k8s). כל שירותי העננים הגדולים נותנים שרות K8S. לכן, למרות שזה יותר מורכב, כדאי לשקול לעבוד בK8S כדי להנות מהשירות הזה.
תודה רבה על המדריך, עזר מאוד!!!
האם db ו phpmyadmin שכתוב בקובץ הם סתם alias והייתי יכול לכתוב koko ו lolo ??
שלום אני רוצה להקים קונטיינר לפיהול וקונטיינר להום אסיסטנט אני צריך שני קיבצי דוקר קומפוז שומים או אחד רק מספיק?
תודה לעונים