推荐使用pm2去管理node项目,下面使用docker下的pm2发布node项目

为什么使用pm2容器,而不是直接用node容器?

docker 下node容器的内存管理默认是系统托管,当项目的内存过大时,项目会被停止

而使用pm2时,node项目的内容是由pm2管理的,同时当node停止时,pm2会自动帮你重启项目

1、docker部署(centos7)

这里是参照官方的安装步骤

安装依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 
sudo yum-config-manager --enable docker-ce-edge
sudo yum install docker-ce

启动docker并设置为开机启动

sudo systemctl enable docker
sudo systemctl start docker

docker配置国内镜像

这里使用的是阿里云的镜像加速地址,这个地址是可以免费申请
您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
 {
   "registry-mirrors": ["你的镜像加速地址"]
 }
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2、拉取pm2镜像

进入阿里云的容器镜像服务地址

docker node 生产环境 docker部署node_运维

输入pm2搜索

docker node 生产环境 docker部署node_操作系统_02

点击需要的镜像查看详情

docker node 生产环境 docker部署node_运维_03

点击复制地址
docker pull registry.cn-hangzhou.aliyuncs.com/wezchina/centos-pm2-docker

3、启动容器

镜像拉取成功后可以使用 docker images 查看
将node项目放到/usr/local/node-project文件夹下
使用命令启动并共享项目文件夹
docker run -v /usr/local/node-project:/data --net=host -it registry.cn-hangzhou.aliyuncs.com/gtts/pm2 bash

4、启动node项目

文章中使用的docker镜像容器中,node为6.x 版本,如果有需要可以参照 linux下node的安装以及环境配置 修改为所需的node版本
进入容器 docker exec -it [container_id] bash
进入项目文件夹 cd /data/xxxx
启动项目 pm2 start bin/www --name [your project name]