Novu开源通知系统Docker Compose部署指南
2025-07-05 03:31:10作者:何将鹤
概述
Novu是一个功能强大的开源通知系统,可以帮助开发者轻松集成多种通知渠道(如邮件、短信、推送等)到应用程序中。本文将通过Docker Compose方式详细讲解如何部署Novu系统的各个组件。
系统架构解析
Novu系统由以下几个核心服务组成:
- API服务:处理所有业务逻辑和请求
- Worker服务:负责后台任务处理和消息队列
- WebSocket服务:实现实时通知功能
- Dashboard:提供可视化管理界面
- MongoDB:作为主数据库存储
- Redis:用于缓存和消息队列
环境准备
在开始部署前,请确保已安装:
- Docker
- Docker Compose
详细配置说明
1. Redis配置
redis:
image: 'redis:alpine'
container_name: redis
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
使用轻量级的Alpine版Redis镜像,配置了健康检查确保服务可用性。
2. MongoDB配置
mongodb:
image: mongo:8.0.3
volumes:
- mongodb:/data/db
environment:
- MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
- MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
使用MongoDB 8.0.3版本,配置了持久化存储卷和初始化认证信息。
3. API服务配置
API服务是Novu的核心,处理所有业务逻辑:
api:
image: 'ghcr.io/novuhq/novu/api:2.3.0'
environment:
NODE_ENV: ${NODE_ENV}
MONGO_URL: ${MONGO_URL}
REDIS_HOST: ${REDIS_HOST}
JWT_SECRET: ${JWT_SECRET}
关键环境变量说明:
MONGO_URL
:MongoDB连接字符串REDIS_HOST
:Redis服务地址JWT_SECRET
:用于API认证的密钥
4. Worker服务配置
Worker服务负责后台任务处理:
worker:
image: 'ghcr.io/novuhq/novu/worker:2.3.0'
environment:
BROADCAST_QUEUE_CHUNK_SIZE: ${BROADCAST_QUEUE_CHUNK_SIZE}
MULTICAST_QUEUE_CHUNK_SIZE: ${MULTICAST_QUEUE_CHUNK_SIZE}
可配置队列处理参数优化性能。
5. WebSocket服务配置
实现实时通知功能:
ws:
image: 'ghcr.io/novuhq/novu/ws:2.3.0'
ports:
- ${WS_PORT}:${WS_PORT}
6. Dashboard配置
提供管理界面:
dashboard:
image: 'ghcr.io/novuhq/novu/dashboard:2.3.0'
ports:
- 4000:4000
部署步骤
- 创建
.env
文件,设置所有必要的环境变量 - 运行
docker-compose up -d
启动所有服务 - 访问
http://localhost:4000
进入管理界面
性能优化建议
- 根据负载调整
MONGO_MIN_POOL_SIZE
和MONGO_MAX_POOL_SIZE
- 合理设置
BROADCAST_QUEUE_CHUNK_SIZE
和MULTICAST_QUEUE_CHUNK_SIZE
- 启用
NEW_RELIC
监控服务性能
常见问题排查
- 服务启动失败:检查
.env
文件是否配置完整 - 连接数据库失败:验证MongoDB认证信息
- 性能问题:调整Redis和MongoDB的连接池大小
总结
通过Docker Compose部署Novu通知系统,可以快速搭建一套完整的通知基础设施。本文详细解析了各服务的配置要点,帮助开发者理解系统架构并顺利完成部署。