
dotnet run המערכת מקמפלת ומריצה. התוצר נכתב לתיקיות obj ו-bin.הטקסט המלא של הדקות הראשונות בהרצאה «Build .NET app on Docker» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, אנחנו רוצים בהרצאה הזאת לדבר על דוקר פייל מולטי סטייג' קובץ דוקר רב שלבי ואנחנו נמצאים על ווינדוס 10, על תחנת הפיתוח שלנו שבה אנחנו כותבים קוד, זה ווינדוס 10 נקי ואנחנו ניכנס עכשיו לאתר של מייקרוסופט ונוריד דוגמה מוכנה.
אני הולך לפי ההוראות שיש באתר של מייקרוסופט שנקרא docker images for sp.net core, יש פה טוטוריאל איך להשתמש ב-sp.net core on docker containers ומפה לקחתי את הדוגמאות שלי מאתר של מייקרוסופט.
אנחנו הולכים לראות מה זה מולטי סטייג' מה זה רב שלבי ונתחיל מזה שנוריד את הדוגמה הזאת אוקיי אנחנו הולכים להוריד אותה מאתר של גיטאב שזה מאגר מרכזי של קוד כל אחד יכול לכתוב קוד ולהעלות לשם את הקוד שלו שימו לב יש להם 40 מיליון מפתחים שמעלים את הקוד לגיטאב זה מאגר מרכזי של קוד ואנחנו רואים פה את
הקבצים ואפשר להוריד את זה ככובד זיפ. אז הדוגמה של מייקרוסופט בעצם הם שמו אותה GitHub ואני עושה להם Extract All, מחלץ את זה לתיקי ה-CAPP. למייקרוסופט גם יש מאגר מרכזי של קוד שנקרא TFS שהוא מתחרה של GitHub, אז תדעו שלמעשה כל הקוד בעולם הם מתכנתים שאומרים או על שרת GitHub או על שרת TFS.
חילצנו את זה, יש לנו פה תיקי הסמפלס, בתיקי הסמפלס יש לנו דוגמה מוכנה של sp.net, אתר מוכן, או סתם איזושהי אפליקציה בדוס, cmd קטנה. אם נראה את האפליקציה הזאת, ניכנס פנימה, אנחנו נראה שכל האפליקציה זה שני קבצים, אני לנוחיות שלי רוצה להוריד לי notepad++, אני פשוט אוהב notepad++, לפתוח כבשי טקסט,
זה ייקח שנייה אחת, אבל זה ממש יקל עליי, נוטפד פלוס פלוס 64 ביט ככה הוא נראה זה כמו נוטפד רגיל רק יותר מוקם ורציתי להראות לכם בתיקייה של דוטנט אפ אותה אפליקציה רגילה של דוטנט יש פה משהו מאוד בסיסי שזה שני קבצים אם אנחנו נראה את הקובץ שנקרא csproj שזה project קובץ של פרויקט אנחנו נמצא פה הגדרות של פרויקט לדוגמה אתם רואים קובץ טקסט כתוב
שזה דורש איזשהו קובץ וזה כתוב בדוטנט 22 זה הפלטפורמה שלו הדי.אל.אלים שלו הבסיס שלו שעליו הוא מסתמך על דוטנט core 22 זה קובץ project שכותב איזה קבצים נמצאים ואיזה דרישות קדם יש לדבר הזה והתוכנה נקראת program.cs שכל התוכנה שלנו זה הקוד שלה עכשיו זה קוד שצריך להפוך אותו לשפת מכונה כן
כן, אז זה כביכול שפת מכונה. לא ניכנס עכשיו לדקויות. אז C-Sharp זה שפה עילית, שפה שאנחנו כותבים בה שברורה לנו, כמו right line, תרשום לי שורה.
צריך להפוך את זה לשפת מכונה כביכול, ואת זה עושה קומפיילר. הקומפיילר הופך את הקוד שאנחנו כותבים אותו במילים הנוחות שלנו לשפת מכונה. הנה, הוא פה מצייר לי פה איזשהו איש עם נקודות.
זה מה שהתוכנה עושה, כן? יש פה פונקציה getbot שמציירת את כל הדבר הזה על המסך. בקיצור ככה עובד התכנות וצריך את הקומפיילר בשביל להפוך את זה לשפת מכונה ואחרי זה צריך גם להריץ את זה שזה הדוטנט עצמו.
הקומפיילר שהופך את זה לשפת מכונה צריך פעם אחת והוא נקרא sdk, הוא חלק מsdk אז אם אני רוצה לקחת קוד בשפה ולהפוך אותו לשפת מכונה אני צריך sdk אם אני כבר הפכתי אותו שזה עושים פעם אחת, בדקתי שאין לי שגיאות, אחרי זה צריך רק run time, רק הרצה שלו, ואנחנו נראה את זה בהמשך.
אז אני חוזר לתוכנה פשוטה שיש לנו כאן. אתם יודעים מה? בואו נריץ אותה, ובשביל להריץ אותה אנחנו צריכים קודם כל לקמפל אותה, כן?
איך אנחנו נקמפל אותה? אנחנו נפתח פה cmd ונריץ את ה-dotnet run. נת run, תריץ לי בבקשה את הפרוגרם CS, אוקיי?
ועכשיו אנחנו נראה שבכלל אין לי פה תוכנה שנקראת .NET RUN. למה אין לי אותה? למה הוא לא יודע מה לעשות? למה הוא לא מבין אותי? כי הנה, מפה לקחתי את הפקודה .NET RUN. למה הוא לא מבין אותי להריץ לי את התוכנה הזאת?
בגלל שאין לי .NET, אין לי SDK. אם אני עולה פה למעלה, כתוב פה שצריך להתקין קודם כל את ה-SDK. מה זה SDK? אמרנו זה הכלים שיודעים לקחת את הקוד שכתוב בשפה העילית בטקסט פשוט ולהפוך אותו לשפת מכונה, זה לא באמת שפת מכונה אבל לצורך שלנו זה מספיק טוב.
אנחנו הולכים לאתר של מיקרוסופט ומורידים download.net sdk 64-bit כי מערכת ההפעלה שלנו היא 64-bit. שימו לב אני נמצא בגרסה של Windows, איזה גרסה אני נמצא?
22? משהו כזה. אה הנה כתוב פה בשם הקובץ שזה קובץ 2.2. עוד מעט יצא 3. זה .NET, אתם רואים Microsoft.NET Core SDK 2.2. אני חושב שכשאתם תראו תצא כבר גרסה 3 אבל זה לא באמת משנה משהו.
אני מתקין את ה-SDK הזה ולמעשה מה אנחנו עושים? אנחנו עושים לפי ההוראות של הדוגמה הזאת של מיקרוסופט אוקיי? אז הנה כתוב פה שאנחנו צריכים את ה-SDK כדי לעשות את התהליך שנקרא בילטינג, אתם רואים? בילטינג דה אפ, לבנות אותו.
ואחרי שנבנה אותו אנחנו צריכים רק את ה-run time. וזה יהיה דרך אגב הרב שלבי, מה יהיה הרב שלבי? שלב ראשון בונים אותו, שלב שני מריצים אותו.
אז אני רוצה להראות לכם איך בונים אותו, ואז אנחנו לוקחים בעצם את ה-dotnet 22 הזה, dotnet core, ומורידים את הדוגמה ועושים לה dotnet run. בואו ניתן לו, הנה הוא כותב פה, מה הוא כותב לנו פה?
ופולינגוור אינסטולד אט סי פרוגרם פיילס דוט נט דוט נט קור sdk זה כלי פיתוח נכון אלו שיודעים לעשות קומפילציה להפוך לשפת מכונה כלי run time שיודעים להריץ את זה ושימו לב הrun time הוא הרבה הרבה יותר קטן של דוט נט קור שזה כל מה שדוט נט וגם sp.net core מה זה sp זה אתרי ווב אז אני אוכל להריץ גם אתרי ווב אני אוכל
להריץ גם אפליקציות רגילות וגם אני אדע לעשות לזה להפוך את זה לשפת מכונה ולחפש שגיאות בזה אוקיי sdk אם אתם תראו את זה פה כתוב במפורש למעלה ש the sample uses build for up the image contains the.netcore sdk which includes cli for local development כלים לפיתוח לדיבאגינג לטייסטים
זה בעצם ה sdk אוקיי אז יש לנו את ה-runtime ויש לנו את ה-sdk ובואו ננסה עכשיו להריץ את זה נלך לכאן יש לנו פה כל מיני דברים נוספים, אני נכנס לתיקיית איפה ששני הקבצים, ננסה עכשיו ככה, .NET RUN. הופה, תראו, זה עבד.
הנה, צייר לי את הדבר הזה, אוקיי? יפה מאוד, צייר לי את הדבר הזה, זה מה שהתוכנה יודעת לעשות. עכשיו, ואם אנחנו נלך, אנחנו נראה שהוא יצר לי פה, חוץ משני הקבצים, תיקיית OBJ, שזה משהו זמני, בזמן הקומפילציה, ו-BIN,
שזה התוצאה הסופית דיבאג, ואם אתם יכולים לראות שהוא יצר לי למעשה קובץ להרצה. אם אני אכנס לתיקי הזאת, אני אוכל להריץ כבר ישר את הקובץ הזה בלי לקמפל אותו עוד פעם.
זה כבר אחרי כביכול שפת מכונה. אוי, סליחה, יצאתי מזה בטעות. עשיתי ככה, יופי. ואני יכול לעשות .NET run על ה-DLL הזה, נכון?
על ה-DLL הזה. שימו לב, התוכנה הזאת, אני מריץ אותה כ-DLL, למרות שלרוב dll הם לא מריצים אותם והנה זה עובד בלי כלי נקרא utils.dll וכל זה נמצא באותה תיקייה בתיקיית דיבאג שזה התוצאה הסופית בין דיבאג בתוך בין נמצאת תוצאה סופית וכנראה שהוא צריך גם קובץ project הנה ככה צריך להריץ אותו בלי מילת run פשוט .NET וזה
עכשיו שימו לב עכשיו כרגע הרצתי אותו בפקודת .NET אמרתי לו לרוץ את זה והוא לא מקמפל את זה כן הוא ישר מריץ לי את ה-DLL הזה, את התוכנה הזאת, זה כאילו קובץ אקסי, כן?
לפני כן, אם אתם זוכרים מה היה לפני כן, הוא קימפל אותה ועשה הרבה הרבה פקודות. אז כשיש לי כבר משהו מוכן, אני מריץ אותו עם runtime על ידי פקודת .NET ומריץ ישירות.
מתכנתים כמובן לא כותבים את כל הפקודות ידנית, יש להם כלי גרפי שהוזהה את זה, שנקרא Visual Studio. אז עוד פעם, אז יש לנו פה תיקייה שאפשר להעתיק אותה עכשיו לכל מחשב שאין לו שום סביבת פיתוח וזה יעבוד לו זאת אומרת כל מה שיש לו run time זה יעבוד זאת אומרת אם אני
אקח עכשיו את התיקייה הזאת ואני אתיק אותה לווינדוס 10 נקי שיש לה רק .NET run time אין לה sdk זה יעבוד מה לא יעבוד הוא לא יוכל להפוך את הקבצי מקור האלו את הקבצים האלו של פרוג'קט לקובץ בין שימו לב זה כתוב בשפת c-sharp וזה כבר כביכול בשפת מכונה כתוב זה לא באמת שפת מכונה כי הוא עדיין צריך את המתווך, את ה-dotnet runtime,
עדיין את המתווך. ככה עובדת גם Java, כן? גם Java runtime עובד, אותו דבר. טוב, אז ראינו מה זה runtime וראינו מה זה SDK. עכשיו, אחרי שהבנו את זה, בואו נחזור לדוגמה יותר מורכבת של אתר אינטרנט.
נכנסים לתיקי ה-ASP, ויש לנו פה קבצי dockerfile מוכנים לבנות את ה-image, וחוץ מזה יש לנו פה את הקבצים של האתר האינטרנט.
הלכנו לתיקיית ASP, נכון? זוכרים? יש לנו בסמפלים תיקיית אפליקציה פשוטה לידוס ותיקייה של אתר אינטרנט. הלכנו לתוך תיקיית אתר אינטרנט ויש לנו פה את כל הקבצים שצריך לאתר אינטרנט.
אתר אינטרנט טיפה יותר מורכב, לדוגמה יש לנו פה קונטרולר, בקר כזה שאליו גולשים האנשים ויש פה קוד, לדוגמה מסאג' כזה וכזה תיתן לבן אדם, תן לבן אדם מסג' כזה, זה כבר קוד שכתוב גם כן בשפת C-Sharp רק עבור אתרי אינטרנט.
מה חשוב שתדעו מתוך הקוד הזה, לדוגמה views, אז יש לנו פה html כזה, לדוגמה עמוד הבא, דף about, יכולים לראות שזה הכל כתוב ב-C-Sharp html בשפת תכנות,