部署前准备环境与目录规划1. 系统环境要求部署前需验证Docker Engine ≥20.10及Compose ≥2.0版本。端口规划需考虑安全默认1880端口应限制访问或通过反向代理暴露。硬件评估建议2GB内存、10GB存储网络需支持容器间通信。2. 项目目录结构设计标准目录结构确保配置、数据、流程分离管理node-red-docker/ ├── docker-compose.yml # 主编排文件 ├── data/ # 持久化目录挂载到容器/data ├── config/ # 自定义配置文件settings.js等 ├── flows/ # 导出的流程文件备份 ├── nodes/ # 自定义节点目录 └── plugins/ # 插件安装目录此结构支持版本控制、备份恢复和团队协作。基础部署单节点快速搭建适用场景单节点部署适用于开发测试、个人学习、小型业务自动化等轻量场景。基础docker-compose.yml配置version: 3.8 services: node-red: image: nodered/node-red:latest-22 container_name: node-red restart: unless-stopped ports: - 1880:1880 volumes: - ./data:/data environment: - TZAsia/Shanghai healthcheck: test: [CMD, curl, -f, http://localhost:1880/health] interval: 30s timeout: 10s retries: 3配置详解镜像策略latest-22锁定Node.js 22基础平衡稳定性与新特性持久化./data:/data挂载确保流程、凭证、配置不丢失健康检查HTTP端点监控服务可用性资源限制可添加mem_limit: 512m防止内存泄漏影响主机高级部署多服务集成方案1. 与MQTT代理集成services: node-red: # ... 基础配置 depends_on: - emqx environment: - MQTT_BROKERemqx:1883 emqx: image: emqx/emqx:5.4 ports: - 1883:1883 - 18083:180832. 数据库集成MongoDB示例services: mongodb: image: mongo:7 volumes: - ./mongo-data:/data/db environment: - MONGO_INITDB_ROOT_USERNAMEadmin - MONGO_INITDB_ROOT_PASSWORDsecret node-red: depends_on: - mongodb # 安装节点npm install node-red-node-mongodb3. HTTP API网关集成Nginx反向代理services: nginx: image: nginx:alpine ports: - 80:80 - 443:443 volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - ./ssl:/etc/nginx/ssl:ro depends_on: - node-red4. 完整四服务编排version: 3.8 services: node-red: image: nodered/node-red:latest-22 # ... 配置 depends_on: - emqx - mongodb emqx: image: emqx/emqx:5.4 mongodb: image: mongo:7 nginx: image: nginx:alpine网络使用默认bridge服务通过服务名互访。启动顺序数据库→MQTT→Node-RED→Nginx。进阶功能自定义配置与扩展1. 配置文件自定义Node-RED允许通过挂载自定义settings.js文件覆盖默认配置。关键配置项包括安全认证配置module.exports { adminAuth: { type: credentials, users: [{ username: admin, password: $2a$08$..., // bcrypt哈希值 permissions: * }] }, httpNodeAuth: { username: user, password: pass }, https: { key: require(fs).readFileSync(/data/ssl/key.pem), cert: require(fs).readFileSync(/data/ssl/cert.pem) } }持久化配置通过环境变量NODE_RED_SETTINGS_FILE/data/config/settings.js指定配置文件路径。2. 自定义节点安装与管理容器内安装节点包有三种方式方式一构建时安装DockerfileFROM nodered/node-red:latest RUN npm install node-red-dashboard node-red-contrib-web-worldmap方式二运行时挂载docker-composevolumes: - ./custom-nodes:/data/node_modules/custom - ./package.json:/data/package.json方式三容器内安装docker exec -it node-red npm install node-red-node-sqlite节点依赖管理最佳实践生产环境锁定版本npm install node-red-dashboard3.1.0分离开发依赖使用package.json的devDependencies定期更新安全补丁npm audit fix3. 插件与主题扩展UI主题自定义安装社区主题包如node-red-contrib-theme-midnight-red在settings.js中配置editorTheme: { theme: midnight-red, page: { title: IoT控制中心 } }项目管理插件启用项目功能需设置环境变量NODE_RED_ENABLE_PROJECTStrue支持Git集成、团队协作。外部模块依赖对于需要系统库的节点如串口通信需在基础镜像中预装依赖FROM nodered/node-red:latest RUN apt-get update apt-get install -y libudev-dev生产环境最佳实践安全加固认证必须启用adminAuth禁用匿名访问HTTPSNginx反向代理配置SSL或容器直接启用HTTPS网络隔离服务间使用内部网络仅暴露必要端口防火墙限制1880端口访问IP范围性能优化内存限制mem_limit: 1g防止内存泄漏流程设计避免阻塞操作使用异步节点高并发MQTT连接池数据库连接复用备份恢复自动化备份cron定时备份/data目录版本管理flows.json纳入Git版本控制灾难恢复定期测试恢复流程七、运维与监控管理日常运维启停docker-compose up -d/docker-compose down状态docker-compose ps/docker logs node-red热重载修改配置后docker-compose restart node-red监控集成健康检查配置HTTP端点监控指标导出安装node-red-contrib-prometheus-exporter告警基于指标设置阈值告警版本升级滚动升级先备份再更新镜像标签兼容性测试流程在新区上的运行回滚点保留旧版本镜像和数据快照