Docker部署nodejs应用并使用PM2作为守护进程

环境:centos7.6 Docker version 18.06.0-ce

1
2
mkdir /data
cd /data

 拉取最新keymetrics/pm2:latest-alpine镜像

1
docker pull keymetrics/pm2:latest-alpine 

从github上拉取代码,先要安装git

1
git clone https://github.com/keymetrics/pm2-docker-alpine

 

1
cd /data/pm2-docker-alpine/example-app

编写Dockerfile,WORKDIR:指定容器的工作目录 COPY:将当前目录下的文件拷贝至容器的/home/Service目录下 EXPOSE 3000:暴露容器内的端口为3000

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[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" ]

 构建容器镜像,注意最后有个点

1
docker build -t test_nodepm2 .

 查看构建成功的镜像

1
docker images

启动容器,并将容器的/home/Service映射到宿主机的/data/pm2-docker-alpine/example-app目录下,便于代码发布,修改

1
docker run --name mynodepm2 -d -v /data/pm2-docker-alpine/example-app:/home/Service -p 3000:3000 test_nodepm2

 查询容器的运行状态

 

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

查询项目运行状态

1
docker exec -it 8205f9c2f6cd pm2 list

1
docker exec -it 8205f9c2f6cd pm2 monit

 

1
2
3
4
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 查看

1
docker exec -it 8205f9c2f6cd pm2 --help

 如何进入容器内

1
docker exec -it 8205f9c2f6cd /bin/sh

修改容器内的时区为中国上海,用于和当前时间同步,注意以下所有操作在容器内进行操作

1
2
3
apk add -U tzdata
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
apk del tzdata

 

 

 

 

参考:https://hub.docker.com/r/keymetrics/pm2 如有疑问可以留言

 

posted @   也曾少年  阅读(11518)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示