עבודה עם docker compose

אם אנו רוצים להפעיל כמה וכמה קונטיינרים בו זמנית לאפליקציות יותר מורכבות - docke

במאמרים הקודמים הסברנו על עבודה עם דוקר. ה-תשתית בה"א הידיעה בכל מה שקשור לווב (ובכלל). עם דוקר, למי שלא זוכר, אני יכול לייצר איזו תשתית שבא לי מכל מחשב בלי להתאמץ. הרסתי והחרבתי? אין בעיה. מרימים שוב.

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

קונסולה של דוקר עם compose up
קונסולה של דוקר עם compose up

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

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

ועוד הערה: אל תשתמשו בקובץ שאנחנו מסבירים עליו פה לסביבת פרודקשן כמובן. שם משתמש root וסיסמה password זה לא רעיון טוב לשרת שפתוח לרשת החיצונית.

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

פתרונות ומאמרים על פיתוח אינטרנט

המנעו מהעלאת source control לשרת פומבי

לא תאמינו כמה אתרים מעלים את ה-source control שלהם לשרת. ככה תמצאו אותם וגם הסבר למה זה רעיון רע.

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