Docker部署node程序+PM2守护进程+mongodb数据库

30 篇文章 0 订阅
2 篇文章 0 订阅

这里有精心准备的PPT,大家可以先过目一下
PPT链接

先准备一个Nodejs实例

我们使用 Express脚手架进行演示

http://www.expressjs.com.cn/starter/generator.html

通过应用生成器express-generator可以快速生成一个应用的骨架
express-generator包含了express命令行工具

npm install express-generator -g           //安装全局生成器

express --view=pug myapp                    //创建名为myapp的express应用

cd myapp						    //进入myapp文件夹

npm install 						    //安装依赖包

npm start						    //启动

访问localhost:3000 页面出现Welcome to Express

在这里插入图片描述

编写Dockerfile

先从官方链接下载Docker
然后在本地项目中创建Dockerfile文件并编写

FROM        node:latest  						//使用最新版本的node镜像
RUN          mkdir -p /usr/src/app 					//在容器内创建目录 
WORKDIR /usr/src/app 					      		//设置工作目录
COPY      . /usr/src/app 							//将本机所有内容拷贝至镜像目录
RUN          npm install 							//执行npm install命令
EXPOSE    3000							  	//端口暴露
CMD         [“npm”,”start”]   						//启动命令

然后使用docker命令完成镜像的打包

docker build -t myapp .								  //打包标签为myapp的镜像

docker run -d -p 3000:3000 --name=”myapp” myapp  		  //后台运行指定名称和端口号映射

localhost:3000                           						         //访问出现Welcome to Express

docker logs -f --tail 100 myapp                      		                //查看最后100行日志

在这里插入图片描述
在这里插入图片描述

什么是PM2?
https://pm2.keymetrics.io/

简介:

PM2是北京邦永科技有限公司自主研发的一套既融入了国际先进的项目管理思想,又结合了国内管理习惯及标准的管理集成系统,既适合于企业级多项目应用,同时也可用于单个的大型项目使用。

特点:

PM2软件以PMI的九大项目管理知识体系为主导思想,以成熟的IT技术为手段,将现代项目管理理论、国内项目管理规程与习惯、项目管理专家的智慧等集成到一起,通过专业管理+平台+协同办公的模式,使项目管理水平质的提高成为可能。
以计划为龙头运筹系统、以合同为中心全面记录、以费用管理为核心深度控制;
嫁接先进的、与国际接轨的项目管理方法体系(理论、工具、技能和方法);
依托邦永科技的项目管理应用实践经验,为项目型企业构建跨区域、分布式的多项目管理平台;
跨越企业从业务操作层、管理层、决策层三个不同层次的实际需求,满足单项目管理、多项目管理、项目组合管理及企业集约化经营的要求;
实现企业信息化从承包工程项目管理信息化–企业多项目集成管理信息化–以项目管理为核心的经营管理信息化这一过程。

PM2常用命令

1. pm2 start app.js 					//启动应用程序
2. pm2 start app.js -i 4 				//启动四个应用程序实例,内置分在均衡
3. pm2 start app.js -i max 				//根据机器的核数确定实例数目
4. pm2 start app.js --name="app" 		//为应用程序起别名
5. pm2 start app.js --watch 				//文件变化时自动重启应用,忽略node_module文件夹内的更改
6. pm2 list 							//展示所有pm2启动的应用程序
7. pm2 jlist 							//json形式的应用程序信息
8. pm2 prettylist 						//美化的json信息
9. pm2 describe <appid> 				//展示特定的应用程序详细信息
10. pm2 monit 						//展示每个应用程序的CPU和内存占用情况,每30s检查一次
11. pm2 show <appname> 				//展示应用程序的所有信息
12. pm2 log  							//展示所有应用程序日志
13. pm2 log --lines 200 				//查看历史日志
14. pm2 reloadLogs 					//重启日志文件
15. pm2 flush 						//清空所有日志文件
16. pm2 stop all 						//停止所有应用程序
17. pm2 stop <appid> 					//停止指定应用程序
18. pm2 restart all 					//重启所有应用程序
19. pm2 delete all 					//删除所有应用程序
20. pm2 delete <appid> 				//删除指定应用程序
16. pm2 scale <appname> 10 			//指定名称应用实例扩展至10个

PM2实战

在原Dockerfile文件中添加

RUN npm install pm2 -g 	

修改CMD启动命令

CMD ["pm2-runtime","./bin/www","-i","4", "--watch", "--name", "myapp"]  

然后重新	启动容器访问

如果进程崩溃,则pm2自动重启

然后我们再输入以下命令

docker exec -it myapp /bin/bash    //进入该容器的命令终端
pm2 logs									//查看pm2日志
pm2 list									//查看pm2进程运行列表

在这里插入图片描述
在这里插入图片描述

pm2可视化链接

同样的,我们也可以使用pm2脚本程序操作

pm2 ecosystem 					//生成脚本文件
pm2 start ecosystem.config.js
module.exports = {
  apps: [{
    name: 'www',
    script: `${__dirname}/bin/www`,

    // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
    instances: 4,		 			//应用启动实例的个数
    autorestart: true, 				//发生异常情况下自动重启
    watch: true, 					//更改文件时自动重启
    max_memory_restart: '1G', 		//最大内存限制数,超出重启
    env: { 						//环境变量
      NODE_ENV: 'development'
    },
    env_production: {
      NODE_ENV: 'production'
    }
  },
  //......
   ]
};

安装和部署mongodb docker

1. docker search mongo  //搜索所有mongo镜像

2. docker pull mongo   //拉取官方镜像

3. docker imsages   //查看所有镜像

4. docker run -p 27017:27017 -v $PWD -d mongo //$pwd选择当前目录为mongodb工作目录,也可以自己指定

5. docker ps -a //查看mmongo工作状态

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值