首页
/ Novu开源通知系统Docker Compose部署指南

Novu开源通知系统Docker Compose部署指南

2025-07-05 03:31:10作者:何将鹤

概述

Novu是一个功能强大的开源通知系统,可以帮助开发者轻松集成多种通知渠道(如邮件、短信、推送等)到应用程序中。本文将通过Docker Compose方式详细讲解如何部署Novu系统的各个组件。

系统架构解析

Novu系统由以下几个核心服务组成:

  1. API服务:处理所有业务逻辑和请求
  2. Worker服务:负责后台任务处理和消息队列
  3. WebSocket服务:实现实时通知功能
  4. Dashboard:提供可视化管理界面
  5. MongoDB:作为主数据库存储
  6. 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

部署步骤

  1. 创建.env文件,设置所有必要的环境变量
  2. 运行docker-compose up -d启动所有服务
  3. 访问http://localhost:4000进入管理界面

性能优化建议

  1. 根据负载调整MONGO_MIN_POOL_SIZEMONGO_MAX_POOL_SIZE
  2. 合理设置BROADCAST_QUEUE_CHUNK_SIZEMULTICAST_QUEUE_CHUNK_SIZE
  3. 启用NEW_RELIC监控服务性能

常见问题排查

  1. 服务启动失败:检查.env文件是否配置完整
  2. 连接数据库失败:验证MongoDB认证信息
  3. 性能问题:调整Redis和MongoDB的连接池大小

总结

通过Docker Compose部署Novu通知系统,可以快速搭建一套完整的通知基础设施。本文详细解析了各服务的配置要点,帮助开发者理解系统架构并顺利完成部署。