前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >使用 PM2 在 Docker 上部署 Node.js Web 应用

使用 PM2 在 Docker 上部署 Node.js Web 应用

作者头像
Yorkyu
发布2022-03-22 15:34:36
发布2022-03-22 15:34:36
3.7K00
代码可运行
举报
文章被收录于专栏:约克编程技术约克编程技术
运行总次数:0
代码可运行

背景

本文介绍 PM2 在 Docker 上部署 Node.js Web 应用。

  • PM2 是守护进程管理器,它将帮助您管理和保持 Nodejs 应用程序 24/7 在线。
  • Docker 是一个开放源代码软件,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker 允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。

一,项目初始化

新建项目 docker-nodejs-pm2-demo,目录结构说明如下:

代码语言:javascript
代码运行次数:0
运行
复制
.
|-- Dockerfile # Docker 构建配置
|-- README.md 
|-- app.js # Nodejs 应用入口
|-- ecosystem.config.js # pm2 配置文件

二,Nodejs 应用

Nodejs Web 应用入口 app.js 文件内容。点击查看

代码语言:javascript
代码运行次数:0
运行
复制
const http = require('http');

http.createServer((request, response) => {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Docker-nodejs-pm2-demo, Hello World!');
}).listen(8080);

三,PM2 配置

PM2 配置文件 ecosystem.config.js 内容。点击查看

代码语言:javascript
代码运行次数:0
运行
复制
module.exports = {
    apps : [{
        name: "docker-nodejs-pm2-demo",
        script: "./app.js",
        instances: 1,
        env: {
            NODE_ENV: "development",
        },
        env_production: {
            NODE_ENV: "production",
        },
        exec_mode: 'cluster',
        combine_logs: true,
        out_file: '/dev/null'
    }]
}

四,Dockerfile

Docker 配置文件 Dockerfile 内容。点击查看

代码语言:javascript
代码运行次数:0
运行
复制
FROM keymetrics/pm2 

# 暴露端口
EXPOSE 8080

WORKDIR /data/release/docker-nodejs-pm2-demo

# 创建目录
RUN mkdir -p /data/release/docker-nodejs-pm2-demo

# 复制源码
COPY . /data/release/docker-nodejs-pm2-demo

# 容器启动时,启动应用服务
CMD ["pm2-runtime", "ecosystem.config.js", "--only", "docker-nodejs-pm2-demo"]

五,Docker 部署应用

5.1. 获取源代码

文章中的示列源码托管到 Github,可直接克隆使用。点击查看

代码语言:javascript
代码运行次数:0
运行
复制
# clone 项目
$ git clone https://github.com/yorkiyu/docker-nodejs-pm2-demo.git

# 进入项目目录
$ cd docker-nodejs-pm2-demo 

# 构建镜像
$ docker build -t docker-nodejs-pm2-demo:2 .

# 查看镜像
$ docker images

5.2. 启动容器

代码语言:javascript
代码运行次数:0
运行
复制
# 启动容器,指定容器中的端口 8080 与宿主机的端口 8080 绑定
$ docker run -d -p 8080:8080 docker-nodejs-pm2-demo:2

# 查看容器
$ docker ps

5.3. 进入容器

代码语言:javascript
代码运行次数:0
运行
复制
# 进入容器
$ docker exec -it 61288ea7784f sh 

# 在容器中查看 pm2 进程
$ pm2 ls

5.4. 访问应用

使用 curl 访问 Nodejs Web 应用。点击查看 curl 教程

代码语言:javascript
代码运行次数:0
运行
复制
$ curl -v http://127.0.0.1:8080

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年11月8日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 一,项目初始化
  • 二,Nodejs 应用
  • 三,PM2 配置
  • 四,Dockerfile
  • 五,Docker 部署应用
    • 5.1. 获取源代码
    • 5.2. 启动容器
    • 5.3. 进入容器
    • 5.4. 访问应用
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档