تغییرات اخیر

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

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


۸ اسفند ۱۳۹۹

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

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

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

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

پیش‌ نیازها: اطمینان از نصب Docker

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

bashCopyEditdocker version

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

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

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

نمونه‌ اول: استفاده از 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 استفاده شده است. برای نصب آن، باید دستور زیر را اجرا کنید:

bashCopyEditnpm 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"]

توضیحات:

  • FROM node:10: مشخص می‌کند که ایمیج پایه بر اساس Node.js نسخه‌ی ۱۰ ساخته می‌شود.
  • WORKDIR /usr/src/app: مسیر کاری (Working Directory) داخل کانتینر را تعیین می‌کند.
  • COPY package*.json ./: فایل‌های package.json و در صورت وجود، package-lock.json را کپی می‌کند.
  • RUN npm install: وابستگی‌ها را نصب می‌نماید.
  • COPY . .: تمام فایل‌های پروژه را به داخل کانتینر منتقل می‌کند.
  • EXPOSE 3000: اعلام می‌کند که برنامه از پورت ۳۰۰۰ استفاده می‌کند.
  • CMD: دستور نهایی برای اجرای فایل app.js است.

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

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

echo "node_modules" > .dockerignore

ساخت Docker Image

برای ساخت ایمیج، از دستور زیر استفاده می‌شود:

docker build . -t hello-world

در اینجا:

  • . به معنای استفاده از مسیر جاری به عنوان Context است.
  • -t hello-world تَگ یا نامی برای ایمیج ساخته‌شده در نظر می‌گیرد.

اجرای Container

پس از ساخت ایمیج، می‌توان یک کانتینر جدید ایجاد و اجرا کرد:

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

در این دستور:

  • -p 8000:3000 پورت ۳۰۰۰ داخل کانتینر را به پورت ۸۰۰۰ روی سیستم میزبان متصل می‌کند.
  • --name c1 نام کانتینر را مشخص می‌نماید.
  • hello-world نام ایمیج مورد استفاده است.

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

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

جمع بندی

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