PracticU

Docker & Visual Studio

בלי כתוביותעם כתוביות
PracticU › קורס Docker - עם Swarm Cluster › Docker & Visual Studio
מילון מושגים:
Docker - פלטפורמה להרצת אפליקציות בתוך קונטיינרים מבודדים וקלים, כדי שירוצו באופן אחיד בכל סביבה.
Visual Studio - סביבת פיתוח משולבת (IDE) של מיקרוסופט לכתיבה, ניפוי והרצה של קוד, בעיקר בשפות .NET.
קונטיינר - חבילה קלה ומבודדת שאורזת אפליקציה עם כל תלויותיה, ורצה באופן אחיד בכל סביבה, למשל ב-Docker.
Dockerfile - קובץ טקסט עם הוראות לבניית Docker Image, המגדיר את הבסיס, הקבצים והפקודות שיירוצו.
דיבאג - תהליך של איתור, הבנה ותיקון תקלות בקוד, לעיתים בעזרת כלי שמאפשר לעצור ולעקוב אחר ריצת התוכנית.
Docker Image - תבנית לקריאה בלבד שמכילה אפליקציה ותלויותיה, וממנה מריצים קונטיינרים ב-Docker.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
DLL - קובץ ספרייה ב-Windows המכיל קוד ופונקציות שתוכנות שונות יכולות לטעון ולהשתמש בהן במשותף.

Docker & Visual Studio
בהרצאה הזאת רואים איך מתכנת עובד מתוך Visual Studio עם קונטיינרים, ואיך אפשר לפרסם את הפרויקט לקונטיינר ולרג'יסטרי בלי לכתוב פקודות Docker ידניות. ההרצאה לא מלמדת תכנות, אלא את תהליך העבודה.
הכנת הסביבה
1. התקנת Visual Studio: ההרצאה משתמשת בגרסת Community החינמית, שמתאימה לכל מה שההרצאה צריכה. בתהליך ההתקנה בוחרים את תמיכת ASP.NET וה-Docker.
2. פרויקט חדש: יוצרים פרויקט ASP.NET Core Web Application, ומסמנים Enable Docker Support כדי שה-Dockerfile ייווצר מראש.
מה Visual Studio עושה בשבילנו
1. בנייה ובדיקה: Visual Studio מריץ את האתר בתוך קונטיינר, כולל דיבאג עם נקודות עצירה (Breakpoints). אפשר לעצור בשורה מסוימת ולבדוק משתנים, בדומה להרצה רגילה.
2. Dockerfile אוטומטי: Visual Studio יוצר את קובץ ה-Dockerfile ומריץ את פקודות docker build בשבילנו. בפרויקט בונים את האימג' עם תגית בשם הפרויקט.
3. מעבר בין Debug ל-Release: במצב Release הדיבאג מוגבל, כי הגרסה הסופית לא מכילה את המידע הטכני הנוסף. הבנייה במצב Release מייצרת קבצי DLL לפרסום.
4. Publish לרג'יסטרי: בוחרים Publish ובוחרים יעד של Docker Registry, למשל Docker Hub. Visual Studio דוחף את האימג' בעצמו, והמתכנת לא צריך לכתוב פקודות push.
שימו לב
שם המאגר ב-Docker Hub צריך להיות באותיות קטנות בלבד. בנוסף, לאחר התקנת Docker Desktop או Visual Studio ייתכן שיידרש ריסטרט כדי שהכל יעבוד.
ההרצאה מראה שהאימג' שנבנה ונדחף לענן נמשך לשרת 2019 בפקודה אחת, כשפורטים נפתחים כבר בהרצה.
השיעור הבא בקורס: התקנת Docker על Ubuntu

פרקי ההרצאה: Docker & Visual Studio

  1. 00:00

    מבוא: עבודה עם קונטיינרים מתוך Visual Studio

  2. 01:59

    התקנת Visual Studio ותמיכת Docker בו

  3. 03:19

    יצירת פרויקט ASP.NET Core חדש

  4. 05:21

    הרצת האתר והתקנת תעודת SSL

  5. 07:38

    הבדל בין מצב Debug למצב Release

  6. 09:01

    Build ויצירת קבצי ה-DLL לשחרור

  7. 11:12

    Publish לענן או לתיקייה חיצונית

  8. 13:05

    הוספת תמיכת Docker לפרויקט

תמלול ההרצאה: Docker & Visual Studio

הטקסט המלא של הדקות הראשונות בהרצאה «Docker & Visual Studio» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    שלום לכולם בהרצאה הזאת אני רוצה להראות לכם איך עובדים עם קונטיינרים מתכנתים איך הם ביום יום מפרסמים דברים מתוך ויז'ואל סטודיו לקונטיינר ואיך אנחנו מושכים את זה איך זה קורה במציאות אז בואו נתקין קודם כל ויז'ואל סטודיו זה חינם ואנחנו נעשה דאונלוד לויז'ואל סטודיו זאת סביבת פיתוח שבה כותבים קוד זה כמו נוטפד משוכלל יותר שבו כותבים קוד,

  2. 00:35

    הוא גם מתקן שגיאות תוך כדי כתיבה, יש לו גם כלים נוספים כמו לעצור באמצע הריצה של התוכנה ולהראות מה קורה שם, אנחנו שמים לו ברקפוינט, נקודת עצירה באמצע, זה למעשה סביבת פיתוח שבה משתמשים המתכנתים במייקרוסופט, יש לנו גרסת קומיוניטי החינמית שיש בה בעצם כל מה שאנחנו נצטרך, היא לא מיועדת לפרויקטים בתשלום, פרויקטים בתשלום צריכים להוריד גרסה אחרת,

  3. 01:08

    אבל מבחינת פיצ'רים יש בה כל מה שאנחנו צריכים. אז אני מתקין עכשיו Visual Studio, זאת סביבת פיתוח לדוגמה ב-Java, מי שמפתח ב-Java מפתח ב-Eclipse, סביבת פיתוח Eclipse, סביבת פיתוח זה כל הכלים שצריך לפיתוח, כמו לקמפל תוכנה, להריץ תוכנה, לדבג אותה ולתקן שגיאות תוך כדי כתיבה.

  4. 01:39

    אנחנו לומדים על כל זה בקורס של תכנות בהרצאה הזאת אנחנו לא נתכנת שורה אחת אנחנו לא נכתוב אף שורת קוד המטרה פה זה לא ללמוד תכנות אלא ללמוד איך המתכנתים עובדים כדי שאתם תדעו איך הם עובדים עם דוקרים ואולי הם ישאלו אתכם איך כדאי לעבוד אז אני נכנס לויז'ואל סטודיו יש

  5. 02:02

    פה הרבה מאוד רכיבים שלהם ותראו את זה asp.net עם דוקר סופורט עם תמיכה בדוקר שימו לב ויז'ואל סטודיו החל מאלפיים ותשע עשרה אני חושב אפילו 2017 אולי כבר תומך בדוקרים.

  6. 02:18

    אנחנו שמים פה V ויש פה עוד רכיבים שאפשר להתקין. אנחנו לא נעבור עליהם, אנחנו לא בקורס תכנות, זה 7 ג'יגה שימו לב.

  7. 02:27

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

  8. 02:47

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

  9. 03:04

    את זה אנחנו נסגור, את חלון ההתקנה אנחנו כבר לא צריכים, אפשר לסגור אותו. ונקטין את הפונט, כי יש לי פה הגדלה של 175 אחוז, נעשה את זה 150 אחוז כדי שייכנס לנו יותר מידע.

  10. 03:19

    והנה הוויז'ואל סטודיו התחיל לעבוד ויש לו פה איזה ויזארד שהוא שואל אותי, אם אני רוצה להתחיל פרויקט חדש בוא נעשה בלי פרויקט חדש סתם שנראה ככה הוא נראה ועכשיו נעשה פרופייל ניו פרויקט פרויקט חדש אנחנו עושים פרויקט של sp.net core.sp.net זה אתרי ווב נקסט שואל אותי איזה שם של פרויקט נקרא לזה פרויקט 1 פרויקט 1 פרויקט מספר 1 אתם יכולים לקרוא לו בכל שם נקסט עכשיו הוא שואל אותי האם אני רוצה אותו ריק או

  11. 04:06

    איזשהו טמפלט, איזושהי תבנית מוכנה, נעשה project web application, שיהיה לי איזשהו אתר פשוט, מוכן, ושימו לב, יש פה v-enable docker support, להכניס כבר docker פנימה, ואם אני שם v אני גם אומר על איזה פלטפורמה אני רוצה אותו, אני לא שם v כדי להראות לכם איך אני אוסיף

  12. 04:28

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

  13. 04:49

    גם VMware אומרים שהם יתמכו בזה. על Eסיקס עצמו אפשר יהיה להריץ קונטיינרים. ויש לנו פה אתר אינטרנט מוכן עם כמה עמודים, אנחנו יכולים גם להחליף, לדוגמה עמוד של privacy, סתם דוגמה, אנחנו יכולים לעשות לו בכותרת נניח 111. סתם, בואו נריץ את זה, ה-S-Express יריץ לנו את כל האתר הזה.

  14. 05:19

    בואו נריץ אותו סתם, רק לראות שהוא באמת עובד. זה קוד, שימו לב, פה אני כותב קוד ופה html, זה נקרא שפת רייזור, שפה שמשלבת קוד וזה, הוא שואל אותי האם אני סומך על ssl שלהם, אני עושה לו yes, הוא אומר לי להתקין תעודה דיגיטלית שלהם, יפה מאוד, ויש לנו פה אתר אינטרנט שעובד, משהו פשוט, אין בו למעשה כלום,

  15. 05:48

    סתם כמה דפים פשוטים של מידע, בואו נראה את זה, הנה כזה welcome, ויש פה עמוד של home שעליו אנחנו נמצאים ועמוד של privacy 11 הזה ששמנו.

  16. 06:05

    זהו, רק שני עמודים, home ו-privacy וזהו. כרגע הרצנו אותו במצב של דיבאג, זה אומר שאנחנו יכולים לשים פה נניח breakpoint ולהגיד לו לעצור, כשהוא יגיע לקוד הזה, לפקודה הזאת לעצור, ואז נוכל לשנות משהו, לראות מה קורה אצלו בזיכרון ודברים כאלו. זה נקרא לדבג אותו.

  17. 06:27

    אני מלמד אתכם מילות בסיס כי אתם כל הזמן תיתקעו בזה. אז אם נגיע נניח לפרייבסי הנה קפצנו לדיבאג כי אנחנו בעמוד של פרייבסי.

  18. 06:38

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

  19. 07:00

    יש פה write click quickwatch ואת כל זה אנחנו לומדים בקורס תכנות כרגע יש בו נעל כרגע הוא ריק ואחרי שנבצע את הפקודה הזאת שורה הזאת נעשה פה דיבאג וטאפ אובר כן או סטאפ אינטר זה לא משנה הנה עברנו לשורה הבאה אתם עכשיו יכולים לראות שפה שביצלנו אותה ב quickwatch התווסף 111 אתם רואים התווסף פה 11 בזה כי ביצענו שורה זה נקרא לדבק תוכנה ולחפש בעיות

  20. 07:38

    לעבור שורה שורה טוב זה נקרא לדבק יש לנו גם ריליס מה זה ריליס ריליס זה אומר גרסה סופית ברגע שאני מריץ אותו בגרסה סופית אני כבר לא יכול לעבור שורה שורה כי בגרסה סופית בריליס אין את כל המידע הטכני הנוסף זה אותו אתר אותו תוכן רק הוא מסתיר ממני את כל המידע הטכני לדוגמה יש שגיאה הוא לא מספר מה בדיוק השגיאה כדי שהאקר לא ידע מה השגיאה זאת אומרת במצב ריליס זה המצב

  21. 08:10

    שאנחנו משחררים את זה ללקוח סופי והוא אומר תראה אתה רוצה לדבק במצב ריליס מה קורה פה אז אני אומר לו top debugging וזהו הוא נעצר אם אני אגיד לו להמשיך ואני אשים פה disable just my code and continue כאילו שאני לא יכול לדבק אוקיי תכף הוא יעלה במצב ריליס עכשיו מה חשוב אתם צריכים לדעת אנחנו עכשיו הולכים להוסיף דוקרים לדוגמה אם אני נכנס פה ושם פה נקודה

  22. 08:57

    ברקפוינט אתם תראו שאני כבר לא יכול כן אני כבר לא יכול להוסיף פה ברקפוינט בדברים כאלו והאתר זה אותו אתר טוב דבר אחרון שאני מלמד אתכם מה זה בילד בילד זה אומר לקחת את הקוד שכתוב בשפה הזאת ולהפוך אותו למוצר סופי לדוגמה זה קובץ dll זאת אומרת הדבר הסופי לעשות בילד זה להפוך את הכל לדוגמה לפרוג'קט

  23. 09:23

    1 dll וזה מה שהדוטנט מעריץ אז כל הקוד שכתוב באנגלית הפשוטה הופך כביכול לשפת מכונה ושוכב בתוך הדי.אל.אלים ונמצא בתיקיית ריליס, זאת אומרת שאם אנחנו ניכנס לתיקיות פה, עכשיו אתם חייבים להכיר את זה כי המתכנתים ידברו איתכם על זה, אתם אלו שתתמכו בזה, גם דיברנו על זה לפני כן, אני רק חוזר.

  24. 09:49

    אז בפרויקט 1 יש לי את כל הקבצים של הפרויקט, בבין יש לי בעצם את המוצר בשפת מכונה, יש אותו עם דיבאג, זה אומר עם מידע נוסף שהוא פולט במקרה של שגיאה, או עם ריליס, שזה כבר בלי המידע הנוסף שייפלט.

  25. 10:07

    ריליס אני רוצה לשחרר, דיבאג אני רוצה לעצמי להשאיר, כן? כאן אני מחפש דעויות, אבל זה מה שהמערכת מריצה.

  26. 10:16

    המערכת לוקחת את הקוד בשפת אנגלית, הופכת אותו כביכול לשפת מכונה, ואז מריצה אותו, אוקיי? את זה הבנו. עכשיו, אני גם יכול למחוק דרך אגב את שני אלו, אין שום בעיה למחוק אותם.

  27. 10:30

    הנה בבקשה, מחקתי אותם, וכשאני אעשה פה ריבילד, הוא יבנה אותם מההתחלה. אתם יכולים ממש לראות פה שעכשיו ה-rebuild יעשה אותם.

  28. 10:39

    והנה בבקשה הופיע ה-release, אתם יכולים לראות פה Rebuild started, הנה הוא הסתיים והנה הוא הופיע פה כל ה-release. יפה מאוד.

  29. 10:48

    עכשיו, כשאנחנו מריצים משהו, אנחנו עושים בילד ואז מריצים את ה-DLL הסופי הזה, כשאנחנו עושים פה פליי.

  30. 11:01

    עכשיו, מה יש לנו אופציות להריץ אותו ב-AS, ב-AS Express, ודבר אחרון שאני רוצה ללמד אתכם מה זה Publish. Publish, איפה הוא נמצא?

  31. 11:13

    רמת פרויקט כן אתם רואים יש פרויקט שזה למעשה תוכנה ויש סולושן שזה אוסף של כמה תוכנות ביחד נניח שיש לי כמה תוכנות שלוגית שייכים לפרויקט אחד אז יכולים להיות אתר אינטרנט אחד, אתר אינטרנט פנימי לדוגמה זה אתר אינטרנט חיצוני ללקוחות ויש אתר אינטרנט פנימי להזנת מוצרים חדשים שרק העובדים נכנסים לשם אז יכול

  32. 11:38

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

  33. 12:09

    פאבליש יפה מאוד אז אה רציתי להראות לכם שימו לב איזה אופציות יש לנו לפאבליש יש לנו אופציות לפרסם את זה אמרנו הנה אני רואה פה פאבליש אני יכול לעשות פה סטארט ואז הוא שואל אותי פאבליש לאן לאז'ור לאז'ור אז'ור לינוקס אז'ור רגיל אז'ור VM איזשהו וירצ'ואל משין ולפרסם ישר לווירצ'ואל משין ולפרסם לאיזשהו תיקייה

  34. 12:40

    ב-FTP בשרת קבצים מרוחק או לאיזושהי תיקייה סתם לזרוק אני סתם יכול לזרוק את הכל לאיזושהי תיקייה והוא יזרוק את זה לשם. זה האופציות שיש אוקיי עכשיו מה שקורה קורה קסם שאני מוסיף שימו לב, docker support, תמיכה בדוקר, אני אומר הפרויקט הזה, תוסיף תמיכה בדוקר.

  35. 13:05

    לפני שאני עושה את זה, שימו לב פה לקבצים שיש לי בפרויקט. אתם רואים איזה קבצים יש? ובואו נראה איזשהו קסם שהתבצע. לא, אנחנו לא רואים פה קסם?

  36. 13:19

    אני רוצה להראות לכם קסם. בואו נעביר את זה לפה. בואו נראה מה יתווסף ברגע שאנחנו נוסיף docker support.

  37. 13:30

    לינוקס או ווינדוס, נניח אנחנו נרצה לעשות את הלינוקס כי הבסיס הוא יותר קטן, וזה .NET Core שיכול להריץ, לרוץ על לינוקס. בניגוד ל- .NET Framework שחייב ווינדוס, .NET Core החדש, פריימורק כבר לא מוצאים לו גרסאות חדשות.

  38. 13:50

    מייקרוסופט עברו ל- .NET Core, זה למעשה המשך של פריימורק והוא עובד גם על לינוקס. אני אומר עדיף על לינוקס כי הבסיס של הלינוקס כמערכת ההפעלה יותר קטן.

  39. 14:02

    יפה מאוד. יופיע פה דוקר פייל, זוכרים דוקר פייל שבונה לי אימג' למעשה מייקרוסופט עשו לי פה דוקר פייל שיבנה לי אימג' ובסוף יעשה אנטרי פוינט שיריץ project1.dll את האתר שלי, אתם רואים אנטרי פוינט, אחרי שהוא עושה קומפילציה ו.net ריסטור זה של כל מיני פקאג'ים נוספים שצריך,

  40. 14:29

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

לקורס המלא: קורס Docker עם Swarm Cluster

ההרצאה הקודמת: Docker Volumes

ההרצאה הבאה: התקנת Docker על Ubuntu

הרצאות קשורות מקורסים אחרים

  • הגדרות של Visual Studio
  • התקנה של Visual Studio
  • docker
  • יצירת פרויקט ב-Visual Studio

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס DevOps - Ansible
  • קורס PowerShell
  • קורס Git ו-GitHub עם Visual Studio