Docker部署nodejs应用并使用PM2作为守护进程
环境:centos7.6 Docker version 18.06.0-ce
mkdir /data
cd /data
拉取最新keymetrics/pm2:latest-alpine镜像
docker pull keymetrics/pm2:latest-alpine
从github上拉取代码,先要安装git
git clone https://github.com/keymetrics/pm2-docker-alpine
cd /data/pm2-docker-alpine/example-app

编写Dockerfile,WORKDIR:指定容器的工作目录 COPY:将当前目录下的文件拷贝至容器的/home/Service目录下 EXPOSE 3000:暴露容器内的端口为3000
[root@localhost example-app]# more Dockerfile
FROM keymetrics/pm2:latest-alpine # Bundle APP files
RUN mkdir -p /home/Service
WORKDIR /home/Service
COPY . /home/Service
#COPY src src/
#COPY package.json .
#COPY pm2.json . # Install app dependencies
ENV NPM_CONFIG_LOGLEVEL warn
RUN npm install --production # Show current folder structure in logs
#RUN ls -al -R
EXPOSE 3000
CMD [ "pm2-docker", "start", "pm2.json" ]
构建容器镜像,注意最后有个点
docker build -t test_nodepm2 .
查看构建成功的镜像
docker images

启动容器,并将容器的/home/Service映射到宿主机的/data/pm2-docker-alpine/example-app目录下,便于代码发布,修改
docker run --name mynodepm2 -d -v /data/pm2-docker-alpine/example-app:/home/Service -p 3000:3000 test_nodepm2
查询容器的运行状态

在浏览器上访问容器所在的服务地址+暴露出来的端口,测试服务是否能正常

查询项目运行状态
docker exec -it 8205f9c2f6cd pm2 list

docker exec -it 8205f9c2f6cd pm2 monit

docker exec -it <container-id> pm2 monit 监控每个进程的CPU /使用情况
docker exec -it <container-id> pm2 list 列出托管流程
docker exec -it <container-id> pm2 show 获取有关流程的更多信息
docker exec -it <container-id> pm2 reload all 0秒停机时间重新加载所有应用程序
更多命令可以执行--help 查看
docker exec -it 8205f9c2f6cd pm2 --help
如何进入容器内
docker exec -it 8205f9c2f6cd /bin/sh

修改容器内的时区为中国上海,用于和当前时间同步,注意以下所有操作在容器内进行操作
apk add -U tzdata
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
apk del tzdata

参考:https://hub.docker.com/r/keymetrics/pm2 如有疑问可以留言
Docker部署nodejs应用并使用PM2作为守护进程的更多相关文章
- 基于Docker部署nodejs应用
基于Docker部署nodejs应用 背景 公司基于Vue.js的项目最近需要部署到云端,因此需要先行在公司内部Docker环境下验证相关技术,因而有本文之前提. 本文展示在Docker容器中,应用部 ...
- dcoker实战,使用docker部署NodeJs应用
docker简介 docker是一个开源的应用容器引擎,可以为我们提供安全.可移植.可重复的自动化部署的方式.docker采用虚拟化的技术来虚拟化出应用程序的运行环境.如上图一样.docker就像 ...
- docker部署nodejs项目应用
之前笔者弄了一套nestjs项目放在自己服务器上,并用pm2管理进程. 现在要把pm2停止,尝试一下用docker容器,那么首先要安装docker 一.安装docker 由于笔者服务器的系统是cent ...
- docker 学习笔记20:docker守护进程的配置与启动
安装好docker后,需要启动docker守护进程.有多种启动方式. 一.服务的方式 因为docker守护进程被安装成服务.所以,可以通过服务的方式启停docker守护进程,包括查看状态. sudo ...
- Docker守护进程
Docker安装完成之后, 需要确定Docker的守护进程是否已经运行. Docker是使用root 权限运行他的程序,进而可以处理普通用户无法完成的操作(比如挂载文件系统). docker程序是Do ...
- 一步步学会用docker部署应用(nodejs版)
一步步学会用docker部署应用 docker是一种虚拟化技术,可以在内核层隔离资源.因此对于上层应用而言,采用docker技术可以达到类似于虚拟机的沙盒环境.这大大简化了应用部署,让运维人员无需陷入 ...
- PM2来部署nodejs服务器永久开启
pm2 日常使用 1. pm2 是什么? 日常开发中需要启动一个node项目,需要用npm run …,,如果终端被关掉,程序也就自动停止,有时候几个项目一起跑起来,好几个终端开着,个人不太喜欢, ...
- PM2 部署 nodejs 项目
在网上找到pm2.目前似乎最常见的线上部署nodejs项目的有forever,pm2这两种.使用场合: forever管理多个站点,每个站点访问量不大,不需要监控. pm2 网站访问量比较大,需要完整 ...
- nginx+ssl+pm2 部署 nodejs 服务
nginx+pm2 部署 nodejs 服务 最近在 centos 上部署 nodejs 服务,记下来步骤: 注意都是使用 root 用户. 下载 nvm: curl -o- https://raw. ...
随机推荐
- Matlab 线性规划问题模型代码
线性规划问题的基本内容 线性规划解决的是自变量在一定的线性约束条件下,使得线性目标函数求得最大值或者最小值的问题. \[ \min z=\sum_{j=1}^{n} f_{j} x_{j} \] \[ ...
- [转帖]sql server版本特性简介、版本介绍简介
sql server版本特性简介.版本介绍简介 https://www.cnblogs.com/gered/p/10986240.html 目录 1.1.sql server的版本信息 1.2.版本重 ...
- Unity 新手引导
根据Shader动态生成遮罩 源码地址 圆形遮罩镂空处理脚本: using System; using System.Collections.Generic; using UnityEngine; u ...
- js中常见的创建对象的方法(1)
工厂模式:抽象了创建具体对象的过程 function createPerson(name, age, job){ var obj = new Object(); obj.name = name; ob ...
- 大数据之路【第十篇】:kafka消息系统
一.简介 1.简介 简 介• Kafka是Linkedin于2010年12月份开源的消息系统• 一种分布式的.基于发布/订阅的消息系统 2.特点 – 消息持久化:通过O(1)的磁盘数据结构提供数据的持 ...
- SSM整合学习 一
一:新建maven项目 File--New Project选择maven项目下的maven-archetype-webapp,输入GroupId.Artifactld,选择maven信息,新建mave ...
- CLRS10.1-6练习 - 用双栈实现队列
双栈实现队列算法: 分别考虑队列两种操作入队和出队,我们假设使用栈s1 s2, s1用来模拟入队,s2用来模拟出队 入队: 入队操作直接执行s1.push即可 出队: 代码实现 package hel ...
- [CF30E]Tricky and Clever Password(KMP+manacher)
首先枚举回文中心,然后显然中心两边要尽量扩展作为middle,这个用manacher实现. 然后注意到suffix的结尾位置是固定的(串尾),那么预处理出以每个位置结尾的串与原串后缀至多能匹配多长,然 ...
- spring cloud各个版本之间的区别
最近公司在使用spring cloud进行开发,对于spring cloud版本号一直有疑惑. 那个版本在前?那个版本在后? 那个版本是最新的? 一.常见版本号说明 举个瓜:2.0.3 RELEASE ...
- SSM前后端分离 ssm+html+js(ajax) 这种controll层的返回值是结合或者网址
提示: 1.单表查询多条数据用 list<实体类名字> mapper层 1.1单表查询单条数据用 对象 2.两表关联查多条 list<map<String,Object> ...