✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

איך להתחיל לעבוד עם דוקר: Docker Compose

רן בר זיק
|
קלה
|
Jan 10, 2019
alt="facebook"alt="linkedin"
להרשמה לניוזלטר

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

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

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

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

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

מאת: רן בר זיק, מתכנת ובלוגר

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

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

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

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

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

מאת: רן בר זיק, מתכנת ובלוגר

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
רן בר זיק
בואו נעבוד ביחד
צרו קשר