یه برنامه نویس معمولی لینوکس کار
نوشتن Dockerfile برای node.js
الان که همه چیز میره به سمت بهینه شدن و حرفه ای شدن ، خیلی مهمه که بتونیم اپلیکیشن هامون رو هم ببریم روی بسترهای حرفه ایتر .
قبل از این در مورد داکر باهاتون صحبت کردم و مزیت ها رو هم گفتم . جدا از من ، داکرمی هم خیلی مفیده و میتونه خوب باشه براتون .
موضوع مهم اینه که برنامه های node.js که نوشتیم رو چجوری داکرایز کنیم و روی داکر بتونیم به راحتی استفاده کنیم . خوب من یک برنامه ساده با express.js مینویسم و روی داکر میبرمش .
پس خیلی سریع میرم سر اصل مطلب :
mkdir mrCoder_nodejs
cd mrCoder_nodejs
nano package.json
داخل package.json کدزیر رو بنویسید :
{
"name": "mrCoder_express_image",
"version": "1.0.0",
"description": "mrCoder image",
"author": "nima habibkhoda <nima.2004hkh@gmail.com>",
"license": "MIT",
"main": "app.js",
"keywords": [
"nodejs",
"bootstrap",
"express"
],
"dependencies": {
"express": "^4.16.4"
}
}
حالا میریم اپلیکیشن رو بسازیم :
npm i
nano app.js
'use strict';
const express = require('express');
// Constants
const PORT = 8080;
const HOST = '0.0.0.0';
// App
const app = express();
app.get('/', (req, res) => {
res.send('Hello world');
});
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);
تا اینجا رو میدونیم و راحته .
حالا میریم که داکر رو بسازیم :
nano Dockerfile
FROM node:10-alpine
دقت کنید :
من از node:10-alpine استفاده کردم چون خیلی توی پروژه ها به درد بخوره . کلا alpine یک نسخه light و کم حجم لینوکسیه که داخل داکر فقط 5 مگابایته و از هسته لینوکس استفاده کرده تا راحت بتونیم روش کار کنیم . 10 هم به این معنیه که نسخه node ما ، 10 باشه .
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
COPY package*.json ./
RUN npm install --only=production
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "npm", "start" ]
کدها خیلی پیچیده نیستن . کپی کردن چند فایل داخل workdir برای اینکه بتونیم باهاشون کار کنیم .
فقط EXPOSE چیه؟
دستور EXPOSE یک دستور شبکه ایه که اجازه میده روی tcp داکر ، روی پورتی که دوست داریم ، پروژه رو اجرا کنیم . خوب حله دیگه . حالا پروژه رو راه بندازیم :
docker build -t mrcoder/node-express-app .
docker run -p 49160:8080 -d mrcoder/node-express-app
curl -i localhost:49160
خروجی کد بالا اینه :
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 12
ETag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0"
Date: Mon, 13 Nov 2017 20:53:59 GMT
Connection: keep-alive
Hello world
داخل کدهای داکر ما روی 49160 یک container راه انداختیم و image رو اجرا کردیم .
تمومه .
ما داریم داخل گروه تلگرامیمون ، دوست داران node.js رو جمع میکنیم . خوشحال میشیم در خدمت باشیم :
t.me/joinchat/DdVnn0Gql_U_sMtml01gQQ
https://www.instagram.com/mr.coder.ir/
@mr.coder.ir
مطلبی دیگر از این انتشارات
استفاده از لیارا / NextJS / Bitbucket Pipelines
مطلبی دیگر از این انتشارات
آموزش ساخت پیامرسان با Socket.io و Vue از صفر تا صد
مطلبی دیگر از این انتشارات
آموزش اجرا کردن لاراول در هاست یا سرور