
yunnysunny/node-xtransit本系列镜像由 yunnysunny 维护,基于 Node.js 官方 LTS 版本构建,提供多样化的 Node.js 运行环境及监控解决方案。主要用途包括:提供基础 Node.js 运行环境、支持原生模块编译、集成性能监控客户端(xtransit)及部署监控平台服务(easy-monitor),满足 Node.js 应用开发、部署及性能监控全流程需求。
yunnysunny/node 扩展,提供原生 Node.js 模块(addon)编译环境。yunnysunny/node,集成 xtransit 客户端环境,对接 easy-monitor 监控平台。| 镜像名称 | 适用场景 |
|---|---|
| yunnysunny/node | 无需原生模块编译的纯 Node.js 应用部署(如 API 服务、前端构建任务)。 |
| yunnysunny/node-compile | 应用依赖原生模块(如 bcrypt、canvas 等),需在容器内编译安装依赖的场景。 |
| yunnysunny/node-xtransit | 已接入 easy-monitor 平台的 Node.js 应用,需上报性能数据至监控平台的场景。 |
| yunnysunny/easy-monitor | 部署 easy-monitor 监控平台服务端,集中管理多应用性能监控的场景。 |
bash# 拉取指定版本(x.y.z 格式,如 18.18.0) docker pull yunnysunny/node:18.18.0 # 拉取 x.y 版本(自动指向该系列最新补丁版本) docker pull yunnysunny/node:18.18 # 拉取 x 主版本(自动指向该系列最新 LTS 版本) docker pull yunnysunny/node:18
bash# 验证 Node.js 版本 docker run --rm -it yunnysunny/node:18 node -v # 作为基础镜像构建应用(Dockerfile 示例) FROM yunnysunny/node:18 WORKDIR /app COPY package.json package-lock.json ./ RUN npm install # 自动使用阿里源加速 COPY . . CMD ["node", "server.js"]
bashdocker pull yunnysunny/node-compile:18 # 版本规则同基础镜像
dockerfileFROM yunnysunny/node-compile:18 WORKDIR /app COPY package.json ./ # 编译原生依赖(如 bcrypt) RUN npm install bcrypt # 自动调用 node-gyp 编译 COPY . . CMD ["node", "app.js"]
| 名称 | 说明 | 必填 |
|---|---|---|
| XTRANSIT_SERVER | easy-monitor websocket 服务地址(如 ws://monitor-server:9190) | 是 |
| EZM_APP_ID | easy-monitor 平台分配的应用 ID | 是 |
| EZM_APP_SECRET | easy-monitor 平台分配的应用密钥 | 是 |
| EZM_DISKS | 磁盘路径列表(用于监控磁盘占用),多路径用 , 分隔(如 /root,/data) | 否 |
| EZM_ERRORS | 错误日志文件路径列表(用于错误分析),多路径用 , 分隔(如 /app/logs/error.log) | 否 |
| EZM_PACKAGES | package.json 文件路径列表(需包含 lock 文件),多路径用 , 分隔(如 /app,/app/submodule) | 否 |
| EZM_LOG_DIR | xprofiler 性能日志输出目录,默认 os.tmpdir() | 否 |
| EZM_DOCKER | 是否强制标记为 Docker 环境(true/false),默认自动检测 | 否 |
| EZM_IP_MODE | 是否将 IP 加入 agentId(true 时格式为 ${ip}_${hostname}),默认仅使用 hostname | 否 |
| EZM_ERR_EXP | 错误日志起始匹配正则(格式 /正则/flag,如 /\d{4}-\d{2}-\d{2}/i),默认匹配 YYYY-MM-DD 时间戳 | 否 |
| ENV_EZM_LOGGER_PROVIDER_FILE | 自定义 logger 对象文件路径 | 否 |
| EZM_LOG_LEVEL | 日志级别(0=error, 1=info, 2=warning, 3=debug),默认 2 | 否 |
| EZM_TITLES | 自定义进程名称列表(process.title),多名称用 , 分隔 | 否 |
| EZM_COMMANDS | 自定义监控命令目录列表,多目录用 , 分隔 | 否 |
| EZM_CLEAN_AFTER_UPLOAD | 上传性能日志后是否删除本地文件(true/false),默认 false | 否 |
| EZM_CUSTOM_AGENT_PROVIDER_FILE | 自定义 agentId 获取逻辑的 JS 文件路径 | 否 |
1. 基础运行命令
bashdocker run -d \ --name node-app-monitor \ -e XTRANSIT_SERVER=ws://easy-monitor:9190 \ -e EZM_APP_ID=app_123 \ -e EZM_APP_SECRET=secret_456 \ -e EZM_DISKS=/root,/data \ -e EZM_ERRORS=/app/logs/error.log \ -v /host/app:/app \ -v /host/logs:/app/logs \ yunnysunny/node-xtransit:18 \ node /app/main.js
2. docker-compose 配置
yamlversion: '3' services: node-app: image: yunnysunny/node-xtransit:18 container_name: node-app-monitor environment: - XTRANSIT_SERVER=ws://easy-monitor:9190 - EZM_APP_ID=app_123 - EZM_APP_SECRET=secret_456 - EZM_DISKS=/root,/data - EZM_ERRORS=/app/logs/error.log - EZM_LOG_DIR=/app/xprofiler-logs volumes: - ./app:/app - ./logs:/app/logs - ./xprofiler-logs:/app/xprofiler-logs command: node /app/main.js
| 名称 | 说明 | 默认值 | 必填 |
|---|---|---|---|
| CONSOLE_MYSQL_HOST | 用户/应用数据库 MySQL 地址 | 127.0.0.1 | 否 |
| CONSOLE_MYSQL_PORT | 用户/应用数据库 MySQL 端口 | 3306 | 否 |
| CONSOLE_MYSQL_USER | 用户/应用数据库 MySQL 用户名 | root | 否 |
| CONSOLE_MYSQL_PASSWORD | 用户/应用数据库 MySQL 密码 | 空字符串 | 否 |
| CONSOLE_MYSQL_DATABASE | 用户/应用数据库名称 | xprofiler_console | 否 |
| LOGS_MYSQL_HOST | 性能日志数据库 MySQL 地址 | 127.0.0.1 | 否 |
| LOGS_MYSQL_PORT | 性能日志数据库 MySQL 端口 | 3306 | 否 |
| LOGS_MYSQL_USER | 性能日志数据库 MySQL 用户名 | root | 否 |
| LOGS_MYSQL_PASSWORD | 性能日志数据库 MySQL 密码 | 空字符串 | 否 |
| LOGS_MYSQL_DATABASE | 性能日志数据库名称 | xprofiler_logs | 否 |
| REDIS_SERVER | Redis 服务地址(格式 ip:port,集群模式用 , 分隔多节点) | 127.0.0.1:6379 | 否 |
| REDIS_PASSWORD | Redis 访问密码 | 空字符串 | 否 |
| REDIS_DB | Redis 数据库索引 | 0 | 否 |
| CONSOLE_BASE_URL | 控制台服务访问地址(需确保客户端可访问,用于性能文件上传) | [***] | 否 |
| CONSOLE_PORT | xprofiler-console 服务端口 | 8443 | 否 |
| MANAGER_PORT | xtransit-manager 服务端口 | 8543 | 否 |
| WSS_PORT | xtransit-server WebSocket 服务端口 | 9190 | 否 |
yamlversion: '3' services: # MySQL 数据库(用户/应用数据 + 日志数据) mysql: image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORD=monitor_root_pwd - MYSQL_DATABASE=xprofiler_console - MYSQL_USER=monitor_user - MYSQL_PASSWORD=monitor_pwd volumes: - mysql-data:/var/lib/mysql ports: - "3306:3306" restart: always # Redis 缓存服务 redis: image: redis:6-alpine volumes: - redis-data:/data ports: - "6379:6379" restart: always # easy-monitor 监控平台 easy-monitor: image: yunnysunny/easy-monitor:18 depends_on: - mysql - redis environment: - CONSOLE_MYSQL_HOST=mysql - CONSOLE_MYSQL_PORT=3306 - CONSOLE_MYSQL_USER=monitor_user - CONSOLE_MYSQL_PASSWORD=monitor_pwd - CONSOLE_MYSQL_DATABASE=xprofiler_console - LOGS_MYSQL_HOST=mysql - LOGS_MYSQL_PORT=3306 - LOGS_MYSQL_USER=monitor_user - LOGS_MYSQL_PASSWORD=monitor_pwd - LOGS_MYSQL_DATABASE=xprofiler_logs - REDIS_SERVER=redis:6379 - CONSOLE_BASE_URL=[***] # 替换为实际可访问地址 - CONSOLE_PORT=8443 - MANAGER_PORT=8543 - WSS_PORT=9190 ports: - "8443:8443" # 控制台端口 - "8543:8543" # 管理服务端口 - "9190:9190" # WebSocket 端口 volumes: - easy-monitor-logs:/app/logs restart: always volumes: mysql-data: redis-data: easy-monitor-logs:
x.y.z 格式,推送时自动级联推送 x.y( minor 版本)和 x(主版本)标签,例如推送 18.18.0 时,自动更新 18.18 和 18 标签指向该版本。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务