تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

آموزش راه‌اندازی برنامه‌ Node.js در Docker


۸ اسفند ۱۳۹۹

برنامه‌های Dockerize‌ شده به‌دلیل مزایایی مانند جداسازی محیط اجرا، سهولت در انتقال و استقرار، به یکی از انتخاب‌های اصلی توسعه‌دهندگان تبدیل شده‌ است. این ویژگی‌ها امکان اجرای یکنواخت و پایدار برنامه‌ها را در محیط‌های مختلف، بدون وابستگی به تنظیمات سیستم میزبان فراهم می‌کند. در این مقاله از لیارا، مراحل Dockerize کردن و اجرای یک برنامه‌ ساده‌ Node.js را به‌صورت گام‌به‌گام آموزش خواهیم داد با ما همراه باشید.

همین حالا به سادگی پروژه‌های داکر خود را در هاست ابری لیارا دیپلوی کنید!
✅ دامنه رایگان ✅ ترافیک نامحدود ✅ هزینه ساعتی
خرید هاست ابری Docker

آنچه در ادامه خواهید خواند:

  • پیش‌ نیازها
  • ساخت برنامه Node.js
  • فایل package.json
  • ساخت فایل Dockerfile
  • ساخت Docker Image
  • اجرای Container
  • استقرار آسان برنامه‌های Docker در بستر ابری لیارا
  • سوالات متداول
  • جمع بندی
آموزش راه‌اندازی برنامه‌ node.js در docker

پیش‌ نیازها

پیش از آن که راه‌اندازی را شروع کنید ابتدا مطمئن شوید تا Docker شما بر روی سیستم عامل مورد استفاده‌تان نصب شده باشد. برای بررسی این موضوع، کافی است دستور زیر را در ترمینال اجرا کنید.

docker version

در صورت مشاهده اطلاعات مربوط به نسخه‌ Docker، می‌توانید به مراحل بعدی مراجعه کنید.

ساخت برنامه Node.js

در این آموزش، لازم است از یک وب‌سرور ساده که با Node.js توسعه یافته استفاده نمایید تا بتوانید در پاسخ پیام «Hello World!» را مشاهده کنید.

نمونه‌ اول: استفاده از Express

const express = require('express');
const app = express();

app.get('/', (req, res) => {
    console.log('request made');
    res.send('Hello World!');
});

app.listen(3000, () => {
    console.log('listening for request on port 3000');
});

در این آموزش و کد از فریم‌ورک Express استفاده کرده‌ایم و بنابراین برای نصب آن دستور زیر را اجرا کنید.

npm install express

نمونه‌ دوم: بدون استفاده از فریم‌ورک

const http = require('http');

const server = http.createServer((req, res) => {
  console.log('request made');

  res.setHeader('Content-Type', 'text/plain');
  res.write('Hello World!');
  res.end();
});

server.listen(3000, '0.0.0.0', () => {
  console.log('listening for requests on port 3000');
});

“نکته مهم: در این نسخه صرفاً از ماژول داخلی http استفاده شده و نیازی به نصب کتابخانه‌ خارجی وجود ندارد.”

فایل package.json

در صورتی که از فریم‌ورک Express استفاده کرده‌اید، بنابراین امکان دارد فایل package.json پروژه شما به صورت زیر باشد.

{
  "name": "hello-docker-world",
  "version": "1.0.0",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "dependencies": {
    "express": "^4.17.1"
  }
}

“راهنمایی: برای ساخت این فایل می‌توانید از دستور npm init -y استفاده کنید.”

ساخت فایل Dockerfile

برای Dockerize کردن این پروژه، لازم است فایل متنی‌ای با نام Dockerfile بسازید. محتوای این فایل به صورت زیر خواهد بود.

FROM node:10

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["node", "app.js"]

جلوگیری از کپی شدن پوشه node_modules

برای جلوگیری از انتقال پوشه‌ node_modules به داخل کانتینر، فایل .dockerignore را در ریشه‌ پروژه ایجاد و محتوای زیر را درون آن قرار دهید.

echo "node_modules" > .dockerignore

ساخت Docker Image

برای ساخت ایمیج، از دستور زیر استفاده کنید.

docker build . -t hello-world

اجرای Container

بعد از ساخت ایمیج، می‌توانید یک کانتینر جدیدی را ایجاد و آن را اجرا کنید.

docker run -p 8000:3000 --name c1 hello-world

پس از اجرای کامل این دستور و نمایش پیام موفقیت‌آمیز، می‌توان خروجی برنامه را از طریق آدرس http://localhost:8000 در مرورگر مشاهده کرد.

استقرار آسان برنامه‌های Docker در بستر ابری لیارا

پلتفرم ابری لیارا امکان اجرای مستقیم پروژه‌های Docker را در محیطی امن، پایدار و مقیاس‌پذیر فراهم می‌کند. تنها با ساخت یک پروژه Docker و بارگذاری ایمیج موردنظر، می‌توانید بدون نیاز به پیکربندی‌های پیچیده، برنامه‌های خود را مستقر کرده و از مزایایی مانند دامنه‌ی رایگان، ترافیک نامحدود و پرداخت ساعتی بهره‌مند شوید. لیارا گزینه‌ای مناسب برای توسعه‌دهندگانی‌ است که به دنبال استقرار سریع و ساده‌ی برنامه‌های داکرایز شده هستند.

سوالات متداول

در ادامه به سوالاتی که امکان دارد در این زمینه برای شما بدون پاسخ بماند، جواب‌های کوتاه اما مفیدی داده‌ایم که با استفاده از آن می‌توانید به سوال خود پاسخ صحیحی را بدهید.

آیا می‌ توانم از نسخه‌ های جدیدتر Node.js در Dockerfile استفاده کنم؟

بله، برای این کار کافی است در خطFROM، به‌جای node:10 از نسخه دلخواه خود مانند node:18 استفاده کنید.

اگر پورت 8000 قبلا روی سیستم من استفاده شده باشد، چه کار باید کرد؟

می‌توانید پورت دیگری را به دلخواه جایگزین کنید، به‌عنوان مثال -p 8080:3000 و سپس با مرورگر به localhost:8080 مراجعه کنید.

آیا برای اجرای برنامه به‌ صورت Dockerize شده نیاز به نصب Node.js روی سیستم است؟

خیر، تنها نصب Docker کافی‌ است، چرا که همه چیز درون کانتینر اجرا می‌شود.

تفاوت نمونه‌ Express و نمونه‌ بدون فریم‌ ورک چیست؟

نمونه‌ Express کد را ساده‌تر و قابل توسعه‌تر می‌کند، در حالی که نمونه‌ بدون فریم‌ورک سبک‌تر و وابسته به ماژول‌های داخلی Node.js است.

چگونه می توانم این کانتینر را در هاست ابری لیارا مستقر (Deploy) کنم؟

کافی‌ است در پنل لیارا، پروژه‌ داکر خود را ایجاد کرده و با استفاده از دستور liara deploy یا تنظیمات CI/CD آن را مستقر کنید.

جمع بندی

در این آموزش، با مراحل Dockerize کردن یک برنامه‌ی ساده‌ Node.js آشنا شدید. شما با ایجاد فایل‌های موردنیاز مانند Dockerfile، ساخت ایمیج و اجرای آن در قالب یک کانتینر، می‌توانید برنامه‌ خود را در محیطی ایزوله و مستقل از تنظیمات سیستم میزبان اجرا کنید. Docker به شما این امکان را می‌دهد که برنامه‌ها را به‌صورت پایدار و یکسان در محیط‌های مختلف توسعه، تست و تولید اجرا کنید.

به اشتراک بگذارید