آنچه در این مقاله میخوانید
آموزش راهاندازی برنامه Node.js در Docker
۸ اسفند ۱۳۹۹
برنامههای Dockerize شده بهدلیل مزایایی مانند جداسازی محیط اجرا، سهولت در انتقال و استقرار، به یکی از انتخابهای اصلی توسعهدهندگان تبدیل شده است. این ویژگیها امکان اجرای یکنواخت و پایدار برنامهها را در محیطهای مختلف، بدون وابستگی به تنظیمات سیستم میزبان فراهم میکند. در این مقاله از لیارا، مراحل Dockerize کردن و اجرای یک برنامه ساده Node.js را بهصورت گامبهگام آموزش خواهیم داد با ما همراه باشید.
همین حالا به سادگی پروژههای داکر خود را در هاست ابری لیارا دیپلوی کنید!
✅ دامنه رایگان ✅ ترافیک نامحدود ✅ هزینه ساعتی
خرید هاست ابری Docker
آنچه در ادامه خواهید خواند:
- پیش نیازها
- ساخت برنامه Node.js
- فایل package.json
- ساخت فایل Dockerfile
- ساخت Docker Image
- اجرای Container
- استقرار آسان برنامههای 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 به شما این امکان را میدهد که برنامهها را بهصورت پایدار و یکسان در محیطهای مختلف توسعه، تست و تولید اجرا کنید.