
docker exec עם -it ו-set, ורואים את משתני הסביבה שנכנסו לקונטיינר מתוך הקובץ..env, שנטען אוטומטית מהתיקייה של הקובץ. בקובץ ה-Compose מציינים את המשתנה בתבנית ${שם}, ולכן שינוי אחד בקובץ ה-env משפיע על כל המקומות.docker compose config מציגה את הקובץ אחרי שכל המשתנים הוחלפו, כדי לבדוק לפני ההרצה מה יקרה בפועל.docker compose up --scale מגדילה את מספר הקונטיינרים של שירות אחד. ההרצאה מציינת שזה הבסיס לקלאסטרים.docker compose -f מפעיל את שניהם, והקובץ השני דורס או מוסיף הגדרות לראשון. ערך פשוט נדרס, ורשימה כמו פורטים מתווספת. לכן ההרצאה מציגה שהפורט בקובץ השני נוסף לפורט שבקובץ הבסיס.הטקסט המלא של הדקות הראשונות בהרצאה «הסבר על Docker Compose - חלק 2» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
טוב חברים בהרצאה הקודמת אנחנו עצרנו בזה שעשינו docker compose בסיסי ראינו שיש לנו סרוויסים זה השמות שיהיו תכלס לקונטיינרים שירוצו אפשר לציין שהם במפורש עכשיו אני רוצה להראות לכם את המשתנה סביבה הזה איך רואים אותו בפנים שתבינו שזה בתוך הקונטיינר
ואנחנו נתחיל לשדרג את זה וללמוד דברים חדשים ובואו נתחיל נראה קודם כל לגבי משתנה סביבה כי זה מאוד מאוד חשוב שתבינו, כי אנחנו הולכים להשתמש הרבה במשתנה סביבה בדוקר.
אז ככה, קודם כל אני עושה פה right-click ו-open container folder in terminal, נכנס לטרמינל, אתם יודעים, ופה יש לי את הקובץ היחיד הזה, docker-compose, ואני יכול לעשות docker-compose-app-d שיעשה לי את זה מאחורי הקלעים.
הוא בונה לי בעצם את הקונטיינרים לפי ההוראות פה שנתנו, ומה שאני רוצה להראות לכם שבתוך הקונטיינר איך רואים משתנה סביבה, למה זה כזה חשוב שתדעו איך הוא נקרא ואיך רואים אותו, אנחנו רואים שיש לנו פה גוי אחד שזה הגוי הזה ואנחנו רוצים לעשות פה docker exec,
תריץ לי אינטראקטיבית בתוך הקונטיינר שנקרא myregistry.gui1 בתוך הקונטיינר הזה, תריץ לי את ה-bin h, יש לו? אין לו, יש, אני בתוך השל, אני בתוך השל, בפנים, בתוך הקונטיינר ואני עושה סט ואני רוצה להראות לכם שבתוך הסט, בואו נעשה את זה ככה, דורקר אקזק אינטראקטיבית
בתוך האימג', לאן הוא נעלם לי, תראו איזה פשלה, לא יודע מה קרה לו, עוד פעם, נעשה קונטרול אסקייפ, נפעיל אותו בגדול, נעשה פה דורקר אקזק, הנה קונטרול R לחצי כדי לעשות היסטוריה, נעשה עוד פעם של, נעשה פה סט,
והנה שני משתני הסביבה האלו, אוקיי? זאת אומרת, כל פרוצס שנפתח בתוך הקונטיינר רואה את שני משתני הסביבה האלו, ואתם רואים מה כתוב פה, רייג' שהוסט זה רייג', המאגר, שהממשק הגרפי מראה, הוא מתחבר לדאטאבס שנמצא בתוך רייג'יסטרי, אוקיי? זאת אומרת שבפורט 5000, אוקיי? הממשק הגרפי מתחבר לשמה.
אם אנחנו נעשה פינג לרייג', אנחנו נראה שבאמת קיים ריזולווינג, השם הזה הופך ל-IP הזה. למה? כי יש להם רשת נפרדת. אני לוחץ קונטרול PQ ואם אנחנו נעשה docker network ls אנחנו נראה שהוא יצר לנו רשת נפרדת.
על רשתות אנחנו נדבר בנפרד רק רציתי להסביר לכם את הנקודה של ריזולווינג לפי שם של סרוויס וזה דבר גדול בגלל שיש לו רשת נפרדת עם dns נפרד.
אוקיי אנחנו יכולים גם לסגור את זה ולעשות פה רייט קליק דאון והנה הוא כותב במקומי את הפקודה של הדאון בואו אני אראה לכם איך אפשר לעשות לדוגמה הרבה קונטיינרים ומה זה דיזייר סטייט דיזייר סטייט זה מצב שאני מאוד מאוד רוצה כאן בסביבה שלי והוא מתואר בקובץ הזה זאת אומרת למעשה הקובץ הזה מתאר לי את המצב שאני רוצה
אני עושה פה שנייה ככה קונטרול אסקייפ פותח יפה מאוד עכשיו אם בתוך גוי אני לא אגיד לו איזה פורט שיהיה בחוץ למה כי אני רוצה לעשות הרבה גויים אני רוצה להראות לכם איך אפשר לעשות הרבה גויים אז אני עושה פה סייב ואומר לו תפרסם פורט 80 במה שבא לך זה דבר ראשון דבר שני אני גם לא צריך לציין לו פורט 5000 כלפי חוץ למה לא צריך לציין פורט
5000 כלפי חוץ כי הם נמצאים באותה רשת ולא צריך לפרסם ברג'יסט ריפורט החוצה כי הם באותו לאן אז מספיק לי שכלפי חוץ יהיה מפורסם רק הגוי אימפורט 80 גוי אימפורט 80 שיפורסם החוצה זה יגיע לזה באמצעות הלאן הפנימי גם ככה ושם כל הפורטים פתוחים ולא צריך לפתוח את הפורט הזה החוצה ואז אני עושה כזה דבר אז אנחנו רואים פה את
התקשורת הפנימית אנחנו רואים אימג' ווליום למה דרך אגב ווליום כל פעם שאנחנו משמידים קונטיינר ובונים אותו מחדש האימג'ים לא נעלמים לנו ואומרים לו הIP תחפש דרך הריזולווינג הפנימי יפה מאוד בואו נשמור את הקובץ הזה ככה ונעשה רייט קליק קומפוז אפ הופה הוא כתב במקומי docker-compose-f
את הקובץ up-d עכשיו docker-compose-ps לא רואה את התיקייה כי אני לא בתוך התיקייה שכחתי להיכנס לתיקי המייר רג'יסטרי docker-compose אתם רואים יש לו פה בעיה בממשק הגרפי הזה אני אעשה אחד חדש docker-compose-ps עוד פעם שכחתי להיכנס לתיקי המייר רג'יסטרי דוקר קומפוז פי אס אנחנו רואים שהוא תפס את
הפורט הזה למה עשיתי לו לא פורט קבוע כי אני רוצה להראות לכם איך אפשר לעשות הרבה קונטיינרים עם אותו סרוויס שימו לב כרגע יש לנו אחד ואני מראה לכם גם שהוא עובד וגם כל האימג'ים נשמרים בפנים אתם רואים כל האימג'ים נשמרים בפנים עכשיו תראו מה אני עושה אני מריץ פקודה שאומרת
לו תעשה לי סקייל תעלה לי את כמות הקומפוז אני רוצה להראות לכם את הפקודה הזאת של סקייל, היא מאוד מאוד חשובה, אתם רואים את הסקייל הזה?
Set number of containers for a service, זאת אומרת שאני עושה פה docker compose app ==scale == שם של סרוויז גוי 3. מה זה הגוי הזה? אני מזכיר לכם, גוי זה זה.
תעשה לי שלושה קונטיינרים של גוי, אני רוצה שיהיו שלושה, לא אחד, שלושה. ושימו לב, הוא עשה לי, אוי, שכחתי מינוס d לעשות, ועכשיו, דוקר פי-אס, גם דוקר פי-אס זה אותו דבר.
שימו לב, יש לי פה גוי 3, 2 ו-1, ורק דאטה-בייס משותף לכולם. וכל אחד תפס פורט אחר. בגלל זה הורדתי את הפורטים, כי אחרת הם היו נוטים להודעת שגיאה, כי פורט היה תפוס.
הנה, שימו לב, אני יכול ללכת גם קום 8 ל-9, והנה הוא עובד. אתם רואים, גם 9 עובד, גם 8 עובד. עכשיו, למה אני מראה לכם את זה? בקלאסטרים בדיוק משתמשים בפקודות האלו בגלל זה הן מאוד מאוד חשובות וזה גוי 123 עכשיו אני עושה right click down והכל נעלם מצוין טוב בואו נמשיך הלאה עכשיו אני רוצה להראות לכם מה זה משתנה סביבה נניח נניח אני רוצה את הדבר הזה להוציא
כמשתנה חיצוני כמשתנה סביבה חיצוני למה שאני ארצה לעשות את זה כי נניח שהמספר הזה מופיע בכל מיני הגדרות בכל מיני מקומות אני רוצה לעשות קובץ חיצוני עם כל מיני הגדרות במקום לא לקרוא את כל הקוד הזה עוד פעם את כל ההגדרות לשנות עוד פעם חלק מהגדרות שמשתנות או יכולות להשתנות אני רוצה לשים בקובץ הגדרות חיצוני כדי לא לדפוק בטעות את האימג' טסקריפ שבונה לי
את כל המערכת אתם תראו שיש כאלו דוקר קומפוז ענקיים ואם אני רוצה לשנות משהו אני מפחד שאני אני ארוס את הכל אז אני יכול לעשות קובץ הגדרות חיצוני בואו נעשה קובץ הגדרות חיצוני אני יכול לעשות כל קובץ שבא לי אבל new file אני אעשה קודם כל קובץ ברירת מחדל בואו נעשה ככה בואו נעשה environment.env.env.env זה קובץ הגדרות שבי דיפולט דוקר תופס אותו ואז
אני יכול לשים לו שלדוגמה זה הולך ל-environment פה ואז אני אומר לו המשתנה הזה, זה המשתנה, בוא נקרא לו באיזשהו שם אחר.
אפשר לקרוא לו בכל שם שבא לכם, כן? אני משאיר בדיוק אותו שם, כן? בוא נקרא לו MyEnvironmentVariableForDurkerRegistry. סתם שיניתי לו שם, שתראו שהשם הוא לא קריטי.
ואז אני אומר לו ככה, המשתנה סביבה בשם כזה יקבל ערך מתוך המשתנה שהגדרתי ב-Environment. זאת אומרת יש לי קובץ environment שמגדיר את המשתנה הזה לדוקר ודוקר עם דולר וסוגריים הופך את זה למספר או לערך שיש שמה ומכניס את זה בתוך הקונטיינר לפה, אוקיי?
עכשיו תשאלו אותי בשביל מה אתה עושה את זה? מה אכפת לך לרשום פה פשוט 5000? תחשבו שזה רשום 20 פעם בכל מיני מקומות, אני מפחד להתבלבל. ככה אני עושה שיש לי משתנה עזר בתוך דוקר עצמו, בתוך דוקר קומפוזי יש לי משתנה עזר, דרך אגב זה עובד גם בדוקר פייל, אני לא הראתי לכם אבל גם בדוקר פייל אפשר לעשות משתנים,
ואז המשתנה הזה מופיע בכל מיני מקומות בתוך קובץ דוקר קומפוז, ואז אם אני רוצה להחליף משהו אני מחליף פה את הפורט, זה הכל, פעם אחת, זה הרעיון של המשתנים.
בואו נראה שכל זה עובד באמת, אנחנו עושים פה right-click down, כל ב-down, נעשה right-click up, docker-compose, מינוס f, מינוס d, הכל עבד, ובואו, אה, באיזה פורט זה עבד, אנחנו לא יודעים.
אני אעשה, אה, עכשיו אני רוצה להראות לכם. נניח אני משנה רק את הפורט. נניח אני עושה 80 ל-80, אוקיי? אני רוצה שיהיה 80% 80 בפנים. למה? כי אני לא רוצה את הסיפור הזה שזה פורט לא ידוע, 32,000. עכשיו, שימו לב מה יקרה אם אני אעשה דוקר, קומפוז, אפ, עוד פעם, כאשר הכל גם ככה עובד. עוד פעם,
הכל עובד ואני עושה אפ. שהוא מספיק חכם לזהות את ההבדלים ולבצע רק את השינויים שימו לב הוא לא ייגע בקונטיינר שלא השתנה שינינו רק את הגוי נכון שימו לב רק את הגוי הוא עושה לו ריקריאטינג למה כי הוא זיהה שיש הבדל רק בהגדרות כאן זה נקרא desired state מצב רצוי אני רוצה שהכל יהיה לי כמו בדוקר קומפוז ימל וגם אם אני אשנה משהו הוא מביא אותי למצב הרצוי קונטרול F5 לא עובד למה בגלל הפורט כן עכשיו
הכל עובד לנו מצוין זאת אומרת ראינו איך עובדים עם משתנים אוקיי ראינו שדולר ושם של משתנה איזה שבא לכם אני בכוונה עשיתי אותו שונה במציאות עושים אותם אותו דבר כדי שתבינו זה שם של המשתנה זה בעצם כאן זאת שיטה אחת לעשות environment variables