האריזה של שירות Node.js

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

למה להקונטיינריז יישום Node.js?

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

  1. נייד. כאשר אנו מקוננים את כל דרישות היישום בתוך קונטיינר, התמונות האלה יכולות להתקין בסביבת פיתוח, בסביבות הבדיקה ו הפקה.
  2. מהיר וקל. קונטיינרים נמצאים לעיתים קרובות הרבה יותר מהירים ממכונות וירטואליות (VMs) או ממתכת גולמית מכיוון שהם מפעילים רק את דרישות היישום, בעוד שהיסטורית, ה-VMs או המתכת הגולמית היו מפעילים את כל המכונה, ואת כל היישומים.
  3. נמדד. עם היתרונות שנ"ל, סקאלביליות מתבצעת בקלות מאחר והקונטיינרים מהירים, יעילים וקלים להתקנה.

במאמר זה, נמקד במיוחד ב המרת אפליקציית Node.js לקונטיינר.

דרישות מוקדמות

כלים ותוכנה

Docker (מנוע Docker ו-CLI של Docker)

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

Node.js ו-npm/yarn מותקנים (לצורך פיתוח/בדיקה ראשוניים)

יהיה עלינו להתקין את Node.js ו-npm כדי להתקין את תלות הספריות ולהפעיל את השירות.

Kubernetes או Docker Compose לניהול מספר קונטיינרים (אופציונלי)

יהיה עלינו להשתמש ב-Kubernetes או ב-Docker Compose לניהול מספר קונטיינרים.

יסודות

מבנה של אפליקציית Node.js:

  • מצפה כי הקורא כבר מבין את תפקיד הקובץ הראשי (app.js או index.js) בפרויקט, יחד עם התפקיד של קבצים אחרים כמו package.json ו־yarn.lock.
  • מאמר זה גם לא יעמיק בנושאים אחרים של הפרויקט, כמו בקרים, מידלוואר, ו־ נתיבים. 

פקודות בסיסיות של Docker ותחביר של Dockerfile

פקודות של Docker:

Shell

 

הוראות יסודיות של Dockerfile:

Shell

 

שני הטבלאות המובאות ומבנה ה־Node.js מספיקים כדי להתחיל בתהליך ההכנסה לקונטיינריזציה ולהשקת שירות ה־Node.js שלך.

התקנת שירות Node.js

התקנת סביבת ה-Node.js היא תהליך פשוט. ודא ש-יש לך Node.js מותקן על המחשב שלך. אם אתה יודע, אנא עיין בטבלה המצורפת (1). לאחר ההתקנה, פתח את ה-טרמינל שלך ווודא את ההתקנה על ידי הקלדת.

Shell

 

צור ספריית פרויקט ואתחל את ה-פרויקט שלך כך:

Shell

 

התקן את מודול ה-express

Shell

 

צור קובץ שרת, נקרא אותו server.mjs, שבו נוסיף את הנתיב והלוגיקה המתאימה לנתיב. מאחר שהמאמר הזה עוסק יותר בתחום ה-containerization, נשמור על לוגיקת הנקודת סיום בצורה פשוטה מאוד. משהו בסגנון:

JavaScript

 

כעת השירות שלך מוכן להתחלה, נווט לתיקיית הפרויקט ב- טרמינל והפעל את הפקודה הבאה:

Shell

 

השירות פועל ורץ; אם נגיע ל- http://localhost:3000,  נראה:"ברוכים הבאים לשרת שלי" 

יצירת קובץ ה-Dockerfile

בואו נברר מהו קובץ ה-Dockerfile, הוא מכיל את ההוראות לבניית התמונה של דוקר. בואו ניצור קובץ Dockerfile בתיקיית השורש. במהלך צעד זה, כפי שדיברנו בהוראות ה-Dockerfile, אנו צריכים לבצע את הפעולות הבאות:

Plain Text

 

בניית והרצת התמונה של Docker

משורש הטרמינל, נווט אל הפרויקט שלך והרץ את הפקודה הבאה :

Shell

 

כאשר image-name הוא שם תמונת ה-Docker. ה-. בסוף מציין שהקונטקסט הוא הספרייה הנוכחית.

לאחר שהתמונה נבנתה, ניצור את הקונטיינר ונריץ את אפליקציית Node.js בעזרת הפקודה הבאה :

Shell

 

לאחר שהפעולה לעיל הצליחה, תוכל לאמת שהשירות פועל על ידי הרצת docker ps, ולאחר מכן ללכת לאותו כתובת URL של localhost כמו קודם.

העלאת תמונות לרג'יסטרי

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

צור חשבון בhttps://hub.docker.com/ והיכנס עם החשבון שלך.

Shell

 

ברגע שאתה מחובר, תמונות שנבנו מקומית יכולות להתווסף כך: כמו:

Shell

 

איפה:

  • תג הוא או החדש ביותר או מספר גרסה.
  • שם-מאגר הוא שם המאגר הרצוי.

בהמשך, דחוף את התמונה כך:

Shell

 

סיכום

כפי שאנו יכולים לראות, ה-containerization עושה זרימות ושירותים מורכבים מהירים, ניידים ונפתחים על ידי ניתוח התלות. לאחר היישום, כל הצוות נהנה מכך.אני ממליץ לך לחקור את התכונות המתקדמות כגון בניית שלבים מרובים ורשתות של container. כמו כן, שקול ללמוד על כלים לאורכסטרציה (לדוגמה, Kubernetes) ולשלב צינורות CI/CD כדי לייעל את זרימת הפיתוח שלך.

נספח

  1. כיצד להתקין את node ו-npm על ה מחשב שלך

Source:
https://dzone.com/articles/containerization-of-a-nodejs-service