מעבר לתוכן

Dockerising של אפליקציית Node.js


מה זה?

ציטוט

 

Docker is a tool for packaging an application and its dependencies into a standardised unit, so that the app can be moved between different environments and run without any changes. This article details how a Node.js application can be Dockerised.

Containers allow developers to package an application with all of its dependencies, and ship it as a single entity. Docker is a tool designed to ease the process of containerisation and is a part of many DevOps toolchains.

A Docker image is a read-only template of the changes in a root file system and other parameters for use within the container runtime. Basically, images are frozen snapshots of the container that can be made to run or stopped, whereas containers are the running instances of the images. A container is the isolated process in user space, which shares the kernel with other containers. When a container is started, Docker adds a read-write layer on top.

Node.js is an asynchronous event driven runtime that enables the development of scalable network applications. It uses an event driven, non-blocking I/O model that makes it lightweight and efficient for developing data intensive applications.

 

 

Figure-1-Building-a-Docker-image.jpg.bc27f2985dde61ab390874ac4eb2e47d.jpg

איור 1: בניית Docker image

 

image.png.d2ec99c1f2c4b8d48a2a2a5bf3c08fee.png

איור 2: הרצת container

 

הכנת הסביבה

כדי להכין את הסביבה לפיתוח, יש צורך בהתקנת Node.js ו-Docker.

  • Windows:

Node.js אפשר למצוא כאן:

https://nodejs.org

Docker אפשר להוריד כאן:

https://hub.docker.com/editions/community/docker-ce-desktop-windows

 

  • לינוקס:

להתקנת Node.js נשתמש בפקודה הבאה:

sudo apt install nodejs

לאחר ההתקנה, אנחנו נוודא שההתקנה הושלמה בהצלחה עם הפקודה:

node -v

יש צורך בהתקנה של מנהל החבילות(Node package manager (npm) ) לפיתוח, על ידי פקודה הבאה:

sudo apt install npm

לאחר ההתקנה, אנחנו נוודא שההתקנה הושלמה בהצלחה עם הפקודה:

npm -v

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

sudo apt update

בתור התחלה,נתקין כמה חבילות אחרות בכדי לאפשר apt עם HTTPS, על ידי פקודה הבאה:

sudo apt install apt-transport-https ca-certificates curl software-properties-common

לאחר מכן נוסיף את המפתח GPG key לריפו הרשמי של Docker, עם הפקודה הבאה:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

עכשיו הוסיף את המקורות ריפו של Docker לקובץ המקורות:

sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable

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

sudo apt update

לבסוף, נתקיןאת הDocker עם הפקודה הבאה:

sudo apt install docker-ce

לאחר ההתקנה, deamon של Docker יופעל, ותאופשר הפעלה בעליה של מערכת ההפעלה. נבדוק את הסטטוס של השירות:

sudo systemclt status docker

כברירת מחדל, Docker יכול לרוץ עם המשתמש root או משתמש מקבוצת Docker, שהיא נוצרת אוטומטית בזמן ההתקנה.

 

יצירת אפליקציית Node.js

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

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

 

Figure-3-Listing-containers.thumb.jpg.183c8c17346e322c0c94d532774b720a.jpg

איור 3: רשימת containers

 

מאחר ויש לכם כבר npm מותקן, אנו נתקין את Express ואת Express-generator עם הפקודה הבאה:

npm i -g express express-generator

בשלב הזה אנו ניצור שלד של אפליקציית Express הנקרא node-docker

הפקדה הבאה יוצרת את השלד:

express node-docker

 

האפליקציה תיווצר בתיקייה הנראת node-docker.

לאחר מכן אנו נתקין תלויות על ידי שינוי שם התיקייה לnode-docker ונשתמש בפקודה הבאה:

npm install or npm I

עכשיו אפשר להשתמש בפקודה npm start כדי לאתחל את האפליקציה. אנו נשתמש בדוגמה הזו ל-Dockerisation.

 

כתיבת קובץ Dockerfile

Dockerfile הוא קובץ טקסט המכיל את כל הפקודות הנקראות "order to assemble an image" (סדר להרכבה של קובץ תמונה).

אנו צריכים להוסיף את הקובץ הזה לתיקייה של האפליקציה שלנו שנמצאת בnode-docker.

לאפליקציה שלנו, Dockerfile, יורא להוריד Node.js, ליצור תיקייה לאפליקציה, ויתקין את החבילות הדרושות לאפליקציה שלנו.

תוכן לדוגמה:

FROM node:10

#Create app directory

WORKDIR/usr/src/app

#Install app dependencies

COPY package*.json./

RUN npm install

# Bundle app source

COPY  .  .

EXPOSE 8080

CMD [ “npm”, “start”]
 

קובץ Dockerfile תקין חייב להיות מופעל מקובץ ההוראות, המתחיל את שלב הבנייה של קובץ התמונה(Image), ומקבל הוראות.

זה עלול להופיע פעמים רבות בתוך הקובץ, וזה מייצר קבצי תמונה(Images) רבים, או בשלבי הבנייה התלויים בשלבים נוספים.

הוראת WORKDIR, מגדירה את תיקיית העבודה להוראות הבאות.

הוראת COPY, מעתיקה את הקבצים הדרושים מספריית האפליקציה אל הקבצי המערכת של הcontainer שלכם.

הוראת EXPOSE, מודיעה לDocker ש-Container שלכם יאזין לפורט מסויים בזמן ריצה. * ההוראה לא באמת תחשוף את הפורט, אלא תשתמש בו לתיעוד של הבנייה לקובץ התמונה ולריצת הcontainer.

בכדי לחשוף את הפורט אפשר להשתמש בפרמטר -p והפורט ייחשף בזמן ריצה.

 

Figure-4-Running-a-Docker-image-from-the-shared-container.jpg.7c9d5e89f2e38610c2b4a18cd423f356.jpg

איור 4: הרצה של Docker image מcontainer משותף

 

 

Figure-5-Dockerised-application.jpg.12c4ed8655ac64f9725d8e9450fd57ec.jpg

איור 5: אפליקציה ארוזה

 

בניית קובץ תמונה של Docker

עכשיו כשישי לנו קובץ Dockerfile מוכן, אנחנו מוכנים לבניית קובץ תמונה של Docker עבור אפליקציה פשוטה.

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

docker build -t node-docker

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

 

הרצת container

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

docker run -p 33221:3000 -d node-docker

 

עם האפשרות -d , אנו מורים לcontainer לרוץ ברקע ולהדפיס את הID של הcontainer

עם האפשרות -p , אנו נחשוף את הפורט של הcontainer שעליו הוא ירוץ.

 

לאחר שראינו שהcontainer שלנו רץ כמו שציפינו, אנו נעצור אותו על ידי הפקודה הבאה:

docker stop <CONTAINER_ID>

 

ה-container ID ניתן למצוא הרשימת הcontainers עם הפקודה הבאה:

docker ps

 

שיתוף container

עכשיו כשהcontainer שלנו מוכן לשיתוף, אנחנו יכולים לעשות זאת על ידי אחד מה-Docker registries כמו Docker Hub או GitHub.

אלו הם כמה מהמקומות המוכרים שאנו יכולים לאחסן את התמונות(Images) שלנו באופן ציבורי או פרטי.

אנו נשתמש בDocker Hub, אך לפני שנשלח את התמונה שלנו לשם, אנא וודאו שנרשמתם לשם לפני הפעולה.

 

עכשיו אפשר להריץ את הפקודה הבאה לבניית התמונה על ידי Docker Hub:

docker build -t[Username]/node-docker

התחברו ל-Docker Hub עם הפקודה הבאה:

docker login

 

תידרשו להכניס את פרטי ההתחברות שלכם. עכשיו אפשר לשלוח את הקובץ תמונה שלכם Docker Hub עם הפקודה הבאה:

docker push [username]/node-docker

לאחר הצלחה בשליחה, בקרו באתר Docker Hub בכתובת https://hub.docker.com, ששם אפשר לראות את כל ההעלאות והתמונות.

עכשיו אפשר להשתמש בקובץ התמונה בכל מקום שמותקן Docker, על ידי פקודת הרצה.

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

docker pull [username]/node-docker

ונריץ את הקובץ שלנו על ידי הפקודה הבאה:

docker run -p 31221:3000 -d [username]/node-docker

,תוכלו לגלוש אל הכתובת http://127.0.0.1:31221 ולמצוא שם את האפליקציה שלכם.

זהו, יצרנו את האפליקציה שלנו ארוזה.

סרטוני מדריך

באפשרותך להוסיף סרטונים מ-Youtube או מ-Vimeo למדריך זה



תגובות מומלצות

עדיין לא נוספו תגובות.

הצטרפות לשיח

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

אורח
הוספת תגובה

×   הדבקה כטקסט עשיר.   הדבקה כטקסט רגיל במקום

  מאושרים אך ורק 75 סמייקונים.

×   הקישור שלך מוצמד אוטומטית.   הצגה כקישור במקום

×   תוכן הקודם שלכם שוחזר.   ניקוי עורך

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • יצירת חדש...

מידע חשוב

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