نوشتن 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