Docker Compose למיכל יישום MEAN Stack

Docker Compose הוא כלי להגדרה והפעלה של מספר מכולות להפעלת יישומים מורכבים ב- Docker, למשל מיכל של יישום MEAN.

בבלוגים הקודמים ב- Docker היית קורא על מה הם תמונות Docker, מיכלים של Docker ומה הצורך בהם. אם לא קראת עליהם, אז אני מבקש ממך לקרוא לפני שתמשיך בבלוג זה ב- Docker Compose.

לאחר בחינת האפשרויות הכרוכות ב- Docker, זה בהחלט מרגש ללמוד עוד. נכון? ובכן, לפחות הייתי כשנקלעתי לאתגר.





מבוא ל- Docker Compose

מיכל יישום שירות יחיד היה לי קל. אבל כשהייתי צריך למכול שירותים מרובים במכולות נפרדות, נתקלתי במחסום. הדרישה שלי הייתה להכיל מכולות לארח ולארח יישום MEAN stack.

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



ההבדל בין hashap ל- hashtable

ניתן להשתמש ב- Docker Compose כדי ליצור מכולות נפרדות (ולארח אותן) לכל אחת מהערימות ביישום מחסנית MEAN. MEAN הוא ראשי התיבות של MongoDB Express Angular & NodeJs. ההדגמה שאציג בבלוג זה היא גם על אותו נושא.

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

התקשורת וזמן הפעילות של מכולות אלה יישמרו על ידי Docker Compose.



אז אתה יכול לשאול, כיצד להתקין את כל התשתית הזו? ובכן, תן לי לתת לך הסבר מפורט יותר.

קובץ Docker

בדומה לאופן שבו אנו מסובבים כל מיכל יישום יחיד על ידי כתיבת קובץ dockerfile, נצטרך לכתוב קובץ docker נפרד לבניית כל אחד מיישומי המיכל היחיד. בנוסף, נצטרך לכתוב גם קובץ Docker Compose שיעשה את העבודה בפועל. קובץ ה- Docker Compose יבצע את קובצי ה- docker השונים כדי ליצור את המיכלים השונים ויאפשר להם לתקשר זה עם זה.

במקרה שלנו, יש לנו יישום מחסנית מלא המורכב מ- MongoDB, ExpressJS, Angular ו- NodeJS. MongoDB דואג למסד הנתונים הקצה האחורי, NodeJS ו- ExpressJS מיועדים לעיבוד צד השרת, ו- Angular מיועד לחזית הקצה.

אפליקציית MEAN Stack - Docker Compose - Edureka

מכיוון שיש שלושה מרכיבים, עלינו לסובב מיכלים לכל אחד מהרכיבים. עלינו לסובב את המכולות בצורה הבאה:

  1. מיכל 1 - זוויתי
  2. מיכל 2 - NodeJS ו- ExpressJS
  3. מיכל 3 - MongoDB

יצירת מיכלי דוקר

כצעד הראשון לעגינת היישום הממוצע, בואו נכתוב את קובץ העגינה לבניית כל אחד מהרכיבים, החל מהמיכל של Angular. קובץ docker זה יצטרך להיות נוכח בספריית הפרויקט יחד עם קובץ 'package.json'. 'Package.json' מכיל את הפרטים אודות איזו גרסת תלות צריכה להשתמש ב- 'NPM' לבניית היישום הזוויתי.

1. Dockerfile לחזית הקצה

מצומת: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm מטמון נקי RUN npm התקן COPY. / usr / src / app EXPOSE 4200 CMD ['npm', 'start']

כמו תמיד, הפקודה הראשונה שלנו היא למשוך תמונת בסיס, ואנחנו מושכים תמונת בסיס 'צומת: 6'.

שתי הפקודות הבאות עוסקות ביצירת ספרייה חדשה '/ usr / src / app' בתוך Docker Container לאחסון קודים זוויתיים והפיכתה לספריית העבודה בתוך Container.

לאחר מכן אנו מעתיקים את קובץ 'package.json' מספריית הפרויקט שלנו אל תוך המכולה.

לאחר מכן אנו מריצים את הפקודה 'נקי מטמון נקי' אשר מנקה את מטמון npm.

לאחר מכן, אנו מפעילים את הפקודה 'npm install' שמתחילה להוריד את לוחות הדוד הנדרשים לאירוח האפליקציה Angular. זה מתחיל להוריד את לוחות הדוד בהתבסס על גרסאות התלות שצוינו ב'package.json '.

הפעלת הפקודה 'הפעלה' הבאה היא העתקת כל הקודים, התיקיות הקיימים מספריית הפרויקט אל תוך המכולה.

הפקודה שלעיל מבקשת מהקונטיינר לחשוף את מספר היציאה 4200 לצורך תקשורת עם שרת הקצה לשליחת בקשות שנעשו על ידי משתמשים הגישה ללקוח הקצה דרך ממשק המשתמש.

לבסוף הפקודה האחרונה היא, הפקודה 'RUN' להתחיל 'npm'. זה מתחיל לבצע את הקודים לבניית האפליקציה Angular שלנו.

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

2. Dockerfile ל- Back End

אפילו קובץ docker זה יהיה קיים בספריית פרויקטים. ספריה זו תכלול גם את קובץ 'package.json' להגדרת התלות של שרת האקספרס ודרישות אחרות של NodeJS. אבל הכי חשוב, הוא מכיל את קוד הפרויקט לתמיכה בשרת הקצה האחורי.

מצומת: 6 RUN mkdir -p / usr / src / app WORKDIR / usr / src / app COPY package.json / usr / src / app RUN npm מטמון נקי RUN npm התקן COPY. / usr / src / app EXPOSE 3000 CMD ['npm', 'start']

כפי שאתה יכול לראות, יש הרבה קווי דמיון בין שני קבצי ה- docker. אנו משתמשים באותו 'צומת: 6' כמו שכבת התמונה הבסיסית, יוצרים ספריה חדשה בתוך המכולה, הופכים אותה לספריית העבודה ומפעילים בין השאר את הפקודה 'npm install'. אבל ההבדל היחיד הוא מספר היציאה שנחשף לתקשורת. במקרה זה מוגדר יציאה 3000. כאן יתארח השרת ויחפש בקשות מהלקוח.

3. מאגר מידע

ייתכן שאתה תוהה מדוע לא הזכרתי את 'dockerfile for Database' בכותרת. הסיבה היא שלמעשה אין לנו שום צורך בהתאמה אישית. אנו יכולים מייד למשוך תמונת בסיס של 'MongoDB' לאחסון הנתונים ופשוט לחשוף את מספר היציאה אליו ניתן לגשת אליו.

עכשיו השאלה שבראשך תהיה, היכן אעשה זאת? ובכן אנו יכולים לעשות זאת בקובץ ההרכבה של דוקר.

קובץ Docker Compose

Docker Compose File הוא קובץ YAML המכיל פרטים אודות השירותים, הרשתות והנפחים להגדרת יישום ה- Docker.

הפעל את הפקודה למטה כדי למצוא את הגרסה של מנוע ה- Docker שלך.

מדריכי SQL של ​​מיקרוסופט למתחילים
docker -v

ביצוע הפקודה יחזיר את הגרסה המופעלת אצל המארח שלך. בהתבסס על גרסת ה- Docker Engine אצל המארח שלך, הורד גרסת Docker Compose המתאימה. אתה יכול לחפש אחר הגרסה המתאימה להורדה התיעוד הרשמי של דוקר .

מאז שאני מפעיל את Docker Engine גרסה 17.05.0-ce, השתמשתי ב- Docker Compose גרסה 3.

התקן את Docker Compose

כדי להוריד את Compose, הפעל את קבוצת הפקודות הבאה.

סודו סלסול -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o / usr / local / bin / docker- להלחין sudo chmod + x / usr / local / bin / docker-compose

שים לב שמספר הגרסה בפקודה ישתנה בהתאם לגרסת ה- Docker Engine שאתה מריץ.

להלן הפקודות המהוות חלק מקובץ ה- Docker Compose שלי.

גרסה: '3.0' # ציין גרסת docker-compose # הגדר את השירותים / המכולות שיש להפעיל: angular: # שם בניית השירות הראשונה: angular-app # ציין את ספריית יציאות ה- Dockerfile: - '4200: 4200' # ציין מיפוי יציאה אקספרס: # שם בניית השירות השנייה: שרת אקספרס # ציין את ספריית יציאות ה- Dockerfile: - '3000: 3000' # ציין קישורי מיפוי יציאות: - מסד נתונים # מקשר שירות זה למסד הנתונים של שירותי מסד הנתונים: # שם תמונת השירות השלישית: mongo # ציין תמונה לבניית מיכל מיציאות: - '27017: 27017' # ציין העברת יציאות

אני די בטוח שהפקודות בקובץ הנ'ל אינן חושבות עבורך. אז בואו נפתור את הבעיה.

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

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

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

זה פשוט. יש לציין את הנתיב לאחר 'build:'. במקרה שלנו, 'יישום זוויתי' ו'שרת אקספרס 'הם נתיבים לשני ספריות אליהם ניתן להגיע מהספרייה בה נמצא הקובץ Docker Compose. עבור מיכל מסד הנתונים שלנו, פשוט אמרתי להשתמש בבסיס 'image: mongo' במקום בנתיב ל- dockerfile.

עבור כל אחד משירותים אלה, ציינתי גם את מספרי היציאה בהם ניתן להשתמש כדי לקבל / לשלוח בקשות ממכולות (שירותים) אחרים. 4200 במקרה של זוויתי, 3000 במקרה של אקספרס ו- 27017 במקרה של מונגו.

בנוסף, למכולה המהירה יש 'קישור:' למיכל מסד הנתונים, המציין כי כל הנתונים שיתקבלו בצד השרת יישלחו למסד הנתונים בו הם יאוחסנו.

עכשיו סוף סוף, אנחנו בסיום הקמת קומפוזיציה. כדי להפעיל Docker Compose ולסובב את שלושת המכולות עם שלושה שירותים, עלינו פשוט לבצע את שתי הפקודות הבאות מהספרייה בה נמצא קובץ ה- Docker Compose (קובץ YAML):

docker-compose לבנות docker-compose למעלה

הפקודה 'docker-compose build' משמשת לבניית / בנייה מחדש של השירותים ואילו, הפקודה 'docker-compose up' משמשת ליצירת / הפעלת המכולות. לך על זה! נסה זאת בעצמך.

להלן צילומי מסך של תמונות Docker שנבנות ואז מבוצעות. ניתן להבחין כי תמונה זוויתית נבנית ואז מתויגת בשם כ'זוויתית: אחרונה '.

כמו כן, תמונה עבור Express נבנית עם שם ותג כ- 'express: latest'.

עכשיו כשהתמונה בנויה, ננסה להריץ אותה ובכך לסובב מיכל בתהליך. להלן צילום המסך הזה.

מה זה hashap ו hashable בג'אווה

להלן צילום המסך שאומר 'webpack: compiled בהצלחה', כלומר שלושת השירותים מיובלים בהצלחה על ידי Docker.

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

מקום אירוח: 4200 - אפליקציה זוויתית (חזיתית)
אירוח מקומי: 3000 - שרת אקספרס ו- NodeJS (אחורי / צד השרת)
localhost: 27017 - MongoDB (מסד נתונים)

התרשמתי עדיין? המתן, כי דוקר עדיין לא גמור! אנו יכולים להשתמש בפקודה 'docker-compose scale = 'x'' כדי להגדיל / להקטין את מספר הפריסות בקלות. במילים אחרות, אנו יכולים ליצור מספר רב של מכולות עבור שירות. להלן הפקודה המלאה לשינוי גודל שירות מסוים למכולות '5':

קנה מידה של docker-compose = 5

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

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

Docker Compose | יישום מיון מחסנית מיכל | מדריך DevOps

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

יש לך שאלה עבורנו? אנא הזכיר זאת בסעיף ההערות ונחזור אליך.