داکر کردن یک برنامه اصلی Node.js/Nest.js

امروز یک برنامه Node.js را Dockerize می کنیم. برای امروز از Nest.js استفاده خواهیم کرد. اما دستورات و فرآیندها دقیقاً برای هر برنامه Node.js ساخته شده توسط برخی فریمورک های دیگر (مانند Express.js) یکسان است.
Nest.js چیست و چرا از آن استفاده می کنیم؟
Nest.js یک چارچوب Node.js مترقی است. راه های زیادی برای ساختاردهی پروژه های Nodejs وجود دارد، به خصوص زمانی که از Express یا سایر فریم ورک های مشابه استفاده می کنیم. اما زمانی که چندین نفر روی یک پروژه کار می کنند ممکن است مشکل ایجاد شود. Nest.js در این سناریوها به کمک می آید. از الگوی خاصی برای ایجاد یک پروژه پیروی می کند و به جدا نگه داشتن ماژول های مختلف برنامه ما از یکدیگر کمک می کند، که عالی است!
شروع کار با Nest.js
ابتدا باید cli Nest.js را نصب کنیم. دستور زیر را روی ترمینال خود اجرا کنید.
npm i -g @nestjs/cli
پس از اتمام نصب، میتوانیم به راحتی یک برنامه Nest.js جدید مانند این را داربست کنیم.
nest new example-app
پس از مقداردهی اولیه، می توانیم به دایرکتوری پروژه رفته و پروژه را بلافاصله شروع کنیم!
cd example-app
yarn start:dev
پروژه شما در پورت 3000 در هاست محلی شما اجرا خواهد شد. مرورگر خود را باز کنید و به http://localhost:3000/، و شما یک پاسخ “Hello World” دریافت خواهید کرد!
داکر چیست و چرا باید از آن استفاده کنیم؟
Docker روشی برای کانتینری کردن برنامه شما است تا دیگر نگران زمان اجرا، وابستگی ها یا نسخه های مختلف نباشید.
اگر یک Docker Image روی دستگاه محلی شما اجرا شود، روی هر دستگاهی اجرا خواهد شد. این برای استقرار آسان برنامه های ما یا اشتراک گذاری با دیگران عالی است. ما اکنون برنامه خود را مرحله به مرحله داکر می کنیم.
مرحله 1: Docker را نصب کنید
برای نصب داکر به اینجا بروید https://docs.docker.com/get-docker/
مرحله 2: Docker را به پروژه خود اضافه کنید
یک فایل جدید به نام Dockerfile را در دایرکتوری ریشه خود اضافه کنید.
مرحله 3: دستورات Docker را اضافه کنید
کد زیر را به Dockerfile خود اضافه کنید.
بیایید کد را خط به خط تجزیه و تحلیل کنیم.
FROM node:12
در اینجا ما تصویر پایه خود را تنظیم می کنیم که برنامه ما بر اساس آن اجرا می شود. در اینجا ما در حال انتخاب هستیم node:12
این یک تصویر رسمی از گره است که در داکر هاب یافت می شود.
WORKDIR /app
ما فهرست کار خود را که برنامه نام دارد تنظیم می کنیم.
ADD package.json /app/package.json
فایل package.json را به پوشه کاری خود منتقل می کنیم.
RUN npm install
ما نصب معمولی npm خود را در دایرکتوری ریشه خود اجرا می کنیم
ADD . /app
ما محتویات را به فهرست برنامه منتقل می کنیم
پورت 3000 را در کانتینر در معرض دید قرار می دهیم تا بتواند با بیرون کانتینر ارتباط برقرار کند. بستگی به این دارد که برنامه شما روی کدام پورت اجرا می شود. برای لانه ها معمولاً 3000 است
CMD ["npm", "run", "start"]
در نهایت، دستور خود را برای شروع برنامه اجرا می کنیم. هر فایل docker می تواند تنها یک دستور CMD در آن داشته باشد.
مرحله 4: تصویر Docker خود را بسازید
دستور زیر را برای ساخت تصویر داکر خود اجرا کنید. این را از همان دایرکتوری ریشه پروژه خود اجرا کنید
docker build . -t example-app
در اینجا ما تصویر خود را با استفاده از -t نامگذاری می کنیم. ما می توانیم هر نامی برای تصویر خود بگذاریم. برای ثبات، ما از نام پروژه در اینجا استفاده می کنیم. مدتی طول می کشد تا تصویر ساخته شود.
مرحله 5: تصویر docker را اجرا کنید
ما می توانیم تصاویر را با اجرای آنها مشاهده کنیم.
docker images
تمام تصاویر موجود در دستگاه ما را فهرست می کند
میتوانیم ببینیم که تصویر ما «آخرین» را به عنوان یک برچسب دارد. به صورت پیش فرض داده شده است. اگر بخواهیم می توانیم تصویر خود را دوباره تگ کنیم. اکنون برای اجرای تصویر خود، ابتدا باید نمونه در حال اجرا پروژه را متوقف کنیم Ctrl+C و سپس دستور زیر را اجرا کنید…
docker run --rm -it -p 3000:3000/tcp example-app:latest
این دستور چندین بخش دارد، اما مهمترین بخش بررسی آن است 3000:3000/tcp اینجا؛ 3000 اول به معنای پورت میزبان محلی ما است که می خواهیم در تصویر داکر در حال اجرا نگاشت شود. و 3000 دوم همانگونه که قبلاً تنظیم کردیم، پورت آشکار شده از داخل کانتینر داکر است.
اگر بخواهیم ببینیم که کار می کند یا نه، می توانیم مانند قبل به مرورگر خود برویم و به. http://localhost:3000/ ببینید آیا آنطور که انتظار می رود کار می کند یا خیر.
مرحله 6: بازی با آن
اکنون می توانید کد خود را تغییر دهید، تصویر را دوباره بسازید و دوباره اجرا کنید تا ببینید آیا تغییر در تصویر داکر پیدا شده است یا خیر.
در اینجا می توانید کد پروژه را پیدا کنید.
https://github.com/Mohammad-Faisal/example-nestjs-app
از طریق لینکدین با من در تماس باشید