Node.js 性能平台 - Node.js Performance Platform
集成 alinode + yarn + pm2 + agenthub
自动启动 agenthub 服务,让你可以像 pm2 镜像一样方便使用。
GitHub | Docker Store | 《Node.js性能平台运行时版本和官方对应列表》 | 《官网 Dockerfile 模板》
镜像 | 基础镜像 | AliNode | Node | Dockerfile |
---|---|---|---|---|
toomee/alinode:3 | debian:jessie | v3.15.0 | v8.16.0 | Dockerfile |
toomee/alinode:3-slim | debian:jessie-slim | v3.15.0 | v8.16.0 | Dockerfile |
toomee/alinode:3-alpine | alpine:3.8 | v3.14.1 | v8.15.1 | Dockerfile |
toomee/alinode:4 | debian:jessie | v4.8.0 | v10.16.0 | Dockerfile |
toomee/alinode:4-slim | debian:jessie-slim | v4.8.0 | v10.16.0 | Dockerfile |
toomee/alinode:4-alpine | alpine:3.8 | v4.7.0 | v10.15.3 | Dockerfile |
toomee/alinode:5 | debian:jessie | v5.13.0 | v12.13.0 | Dockerfile |
toomee/alinode:5-slim | debian:jessie-slim | v5.13.0 | v12.13.0 | Dockerfile |
toomee/alinode:5-alpine | alpine:3.9 | v5.13.0 | v12.13.0 | Dockerfile |
$ docker images toomee/alinode
REPOSITORY TAG IMAGE ID CREATED SIZE
toomee/alinode 5-alpine 0cebf1ac010e 1 minutes ago 115MB
toomee/alinode 5.13-alpine 0cebf1ac010e 1 minutes ago 115MB
toomee/alinode 5.13.0-alpine 0cebf1ac010e 1 minutes ago 115MB
toomee/alinode 5-slim 4e8ca2cd1b31 2 minutes ago 228MB
toomee/alinode 5.13-slim 4e8ca2cd1b31 2 minutes ago 228MB
toomee/alinode 5.13.0-slim 4e8ca2cd1b31 2 minutes ago 228MB
toomee/alinode 5 20724a6d2b7e 3 minutes ago 276MB
toomee/alinode 5.13 20724a6d2b7e 3 minutes ago 276MB
toomee/alinode 5.13.0 20724a6d2b7e 3 minutes ago 276MB
toomee/alinode 4-alpine b60e826e8854 7 minutes ago 106MB
toomee/alinode 4.7-alpine b60e826e8854 7 minutes ago 106MB
toomee/alinode 4.7.0-alpine b60e826e8854 7 minutes ago 106MB
toomee/alinode 4-slim 403c69f5e02b 8 minutes ago 225MB
toomee/alinode 4.8-slim 403c69f5e02b 8 minutes ago 225MB
toomee/alinode 4.8.0-slim 403c69f5e02b 8 minutes ago 225MB
toomee/alinode 4 dd8497da944f 9 minutes ago 272MB
toomee/alinode 4.8 dd8497da944f 9 minutes ago 272MB
toomee/alinode 4.8.0 dd8497da944f 9 minutes ago 272MB
toomee/alinode 3-alpine 8f1d88e5fdcf 10 minutes ago 101MB
toomee/alinode 3.14-alpine 8f1d88e5fdcf 10 minutes ago 101MB
toomee/alinode 3.14.1-alpine 8f1d88e5fdcf 10 minutes ago 101MB
toomee/alinode 3-slim cdcc791e5b8b 11 minutes ago 216MB
toomee/alinode 3.15-slim cdcc791e5b8b 11 minutes ago 216MB
toomee/alinode 3.15.0-slim cdcc791e5b8b 11 minutes ago 216MB
toomee/alinode 3 3a04e8b4b73f 12 minutes ago 264MB
toomee/alinode 3.15 3a04e8b4b73f 12 minutes ago 264MB
toomee/alinode 3.15.0 3a04e8b4b73f 12 minutes ago 264MB
假设你的项目是如下结构
.
├── src
│ └── app.js
├── package.json
├── ecosystem.config.js
└── README.md
$ docker pull toomee/alinode:5
到当前项目目录下执行如下命令:
$ docker run -d \
-p 8000:8000 \
-v $PWD:/app \
-e "APP_ID=应用ID" \
-e "APP_SECRET=应用密钥" \
-h my-alinode \
--name my-alinode \
toomee/alinode:5
项目跟目录创建 alinode.config.json
内容如下:
{
"appid": "<YOUR APPID>",
"secret": "<YOUR SECRET>",
"logdir": "/tmp/",
"error_log": [
"</path/to/your/error.log>",
"您的应用在业务层面产生的异常日志的路径",
"例如:/root/.logs/error.#YYYY#-#MM#-#DD#-#HH#.log",
"可选"
],
"packages": [
"</path/to/your/package.json>",
"可以输入多个package.json的路径",
"可选"
]
}
然后启动容器:
$ docker run -d \
-p 8000:8000 \
-v $PWD:/app \
-h my-alinode \
--name my-alinode \
toomee/alinode:5
命令 | 描述 |
---|---|
$ docker exec my-alinode pm2 monit |
监控每个进程 CPU 使用情况 |
$ docker exec my-alinode pm2 list |
列出进程 |
$ docker exec my-alinode pm2 logs |
查看日志 |
$ docker exec my-alinode pm2 reload all |
无缝重启所有进程 |
PS: 具体使用说明看 PM2 和 alinode 文档
多环境基于配置部署方案:
添加 alinode.config.json
, alinode.config.pre.json
到根目录。
启动 pre 环境容器:
$ docker run -d \
-p 8000:8000 \
-v $PWD:/app \
-e "ALINODE_CONFIG=alinode.config.pre.json" \
-h my-alinode \
--name my-alinode \
toomee/alinode:5
启动 正式 环境容器:
$ docker run -d \
-p 8000:8000 \
-v $PWD:/app \
-h my-alinode \
--name my-alinode \
toomee/alinode:5
也可以使用 docker-compose.yml 启动。
web:
image: toomee/alinode:5
restart: always
hostname: my-alinode
container_name: my-alinode
environment:
APP_ID: 应用ID
APP_SECRET: 应用密钥
# 或者使用自定义环境配置
# ALINODE_CONFIG: alinode.config.pre.json
ports:
- 8000:8000
volumes:
- $PWD:/app
常用命令
$ docker-compose pull # 更新/拉取镜像
$ docker-compose up -d # 启动
$ docker-compose restart # 重启
$ docker-compose down # 关闭并删除
-h my-alinode
是容器 hostname 最终会显示在 https://node.console.aliyun.com/ 平台实例列表中。
如果不写,会显示默认容器名,也就是随机值。
推荐自定义修改 Dockerfile 然后构建合适自己的镜像。
由于官网还没开源,所以 Dockerfile 也是未知的,官方镜像就像是黑匣子。
这个是我研究官网镜像总结出来的,是基于官网镜像直接抽取的,兼容性目前来看没啥问题。
有问题,欢迎反馈。