Docker部署node服务

一、node服务配置

1、修改 package.json , 并写入相关信息和依赖

vim package.json
{ 
  "name": "dockerTest", 
  "version": "1.0.0",
  "description": "Node.js on Docker", 
  "author": "Docker",
  "main": "app.js",   
  "scripts": { 
        "start": "node app.js"
   },
   "dependencies": { 
          "express": "^4.13.3" 
    }
}

2、修改 app.js

vi app.js
var express = require('express');
var PORT = 8000;        # 保持与服务启动端口一致
var app = express();
app.get('/', function (req, res) { 
    res.send('Helloworld\n');
});
app.listen(PORT);
console.log('Running on http://localhost:' + PORT);

 

二、编辑Dockerfile

FROM node:12
RUN mkdir -p /home/vue_shop   # 在容器中创建目录
WORKDIR /home/vue_shop        # 将容器工作目录定位至 /home/vue_shop
COPY . /home/vue_shop         # 将当前目录下的文件复制到容器中的指定目录
RUN npm install               # 执行npm环境安装
EXPOSE 8000      ## 将容器内的端口导出给主机,便于访问,保持与服务启动端口及app.js中的端口一致
CMD npm start
## 如果想运行多条指令可以这样:
## CMD git pull && npm install && npm start

 

三、构建 Images

docker build -t vue_shop_node .

 

四、使用镜像创建容器并启动

docker run --name=vue_shop --restart=always -p 0.0.0.0:8000:8000 -d vue_shop_node

此时,我们就可以通过浏览器访问我们的node服务了

 

 

五、在Docker中用 pm2 或 forever 部署 nodejs项目

1、 pm2

使用命令 pm2 start app.js 之后, pm2 默认在后台运行, 如果使用了Docker后,容器运行并立即退出,需要手动给“pm2”指定参数 --no-daemon

在Dockerfile中:

--no-daemon // run pm2 daemon in the foreground if it doesn't exist already

CMD pm2 start app.js --no-daemon // 设置启动方式

#  或者 使用   pm2-docker
CMD pm2-docker start app.js

 

2、 forever

同理forever也是
Forever start script.js runs in the background. To run forever in the foreground, try forever script.js.

CMD forever -c 'node --harmony' app.js // 设置启动方式

 

posted @ 2022-06-08 16:40  DeyouKong  阅读(1519)  评论(0编辑  收藏  举报