feat:增加一键启动

This commit is contained in:
Join
2025-11-12 17:11:31 +08:00
parent a8a638940a
commit 3214fd4525
4 changed files with 172 additions and 80 deletions
+7
View File
@@ -87,6 +87,13 @@
- **文档地址(国内)**: <http://docs.192886.xyz:81/>
## 🧭 部署与启动(一键启动)
- 一键启动:`docker-compose up -d`
- 访问:
- 前端 `http://localhost:80` (默认 `iot/IoTAbc2025001@`)
- EMQX 管理 `http://localhost:18083`(默认 `admin/public`)
- Adminer `http://localhost:8081`
## 📸 实战案例与视频教程
### 📊 已对接设备案例(仅展示部分)
+165
View File
@@ -0,0 +1,165 @@
version: '3.8'
services:
backend:
image: ${BACKEND_IMAGE:-nexiot/cn-universal-backend:1.0.0}
container_name: cn-universal-backend
restart: unless-stopped
ports:
- "9092:9092"
environment:
- SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL:-jdbc:mysql://mysql:3306/univ?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true}
- SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME:-root}
- SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD:-Haha@2025}
- SPRING_DATA_REDIS_HOST=${REDIS_HOST:-redis}
- SPRING_DATA_REDIS_PORT=${REDIS_PORT:-6379}
- SPRING_DATA_REDIS_PASSWORD=${REDIS_PASSWORD:-Nexiot2025}
- SPRING_DATA_REDIS_DATABASE=${REDIS_DATABASE:-11}
- MQTT_CFG_HOST=${MQTT_HOST:-tcp://emqx:1883}
- MQTT_CFG_CLIENT_USERNAME=${MQTT_USERNAME:-universal_iot}
- MQTT_CFG_CLIENT_PASSWORD=${MQTT_PASSWORD:-Abc@2025}
- MQTT_CFG_CLIENT_ID_PREFIX=${MQTT_CLIENT_ID_PREFIX:-univ_iot_docker}
- MQTT_CFG_HOST_OUT=${MQTT_HOST_OUT:-tcp://127.0.0.1:1883}
- MQTT_CFG_EMQX_HEADER_KEY=${EMQX_HEADER_KEY:-universal-emqx}
- MQTT_CFG_EMQX_HEADER_VALUE=${EMQX_HEADER_VALUE:-d41d8cd98f00b204e9800998ecf8427e}
- SPRING_PROFILES_ACTIVE=docker
- RUN_MODE=docker
- LOGGING_FILE_PATH=/app/logs
- LOGGING_FILE_NAME=/app/logs/cn-universal-web.log
- SERVER_PORT=9092
- SERVER_HTTP2_ENABLED=false
- JAVA_TOOL_OPTIONS=-Dio.netty.native.workdir=/app/logs
- TCP_PROTOCOL_ENABLED=false
- UDP_PROTOCOL_ENABLED=false
- CTAIOT_PROTOCOL_ENABLE=false
- ONENET_PROTOCOL_ENABLED=false
- IMOULIFE_PROTOCOL_ENABLED=false
- SHARD_LOG_ENABLE=true
- SPRING_APPLICATION_JSON={"server":{"port":9092},"management":{"endpoints":{"web":{"exposure":{"include":"health,info,metrics,prometheus"},"base-path":"/actuator"}}}},"shard":{"log":{"enable":true,"table":{"number":24},"virtual":{"number":8}},"logMeta":{"enable":true,"table":{"number":24},"virtual":{"number":8}}},"iot":{"register":{"auto":{"unionId":"auto_register","latitude":31.081598,"longitude":81.314141}}}}
depends_on:
- mysql
- redis
- emqx
networks:
- release-network
volumes:
- backend_logs:/app/logs
security_opt:
- no-new-privileges:true
read_only: true
tmpfs:
- /tmp
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
frontend:
image: ${FRONTEND_IMAGE:-nexiot/cn-universal-frontend:1.0.0}
container_name: cn-universal-frontend
restart: unless-stopped
ports:
- "80:80"
depends_on:
- backend
networks:
- release-network
security_opt:
- no-new-privileges:true
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
mysql:
image: ${MYSQL_IMAGE:-mysql:8.0}
container_name: cn-universal-mysql
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD:-Haha@2025}
- MYSQL_DATABASE=${MYSQL_DATABASE:-univ}
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
networks:
- release-network
command: --default-authentication-plugin=mysql_native_password --lower_case_table_names=1 --sql_mode=STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
redis:
image: ${REDIS_IMAGE:-redis:7-alpine}
container_name: cn-universal-redis
restart: unless-stopped
environment:
- REDIS_PASSWORD=${REDIS_PASSWORD:-Nexiot2025}
ports:
- "6379:6379"
volumes:
- redis_data:/data
networks:
- release-network
command: redis-server --requirepass ${REDIS_PASSWORD:-Nexiot2025}
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
emqx:
image: ${EMQX_IMAGE:-emqx/emqx:5.3}
container_name: cn-universal-emqx
restart: unless-stopped
environment:
- EMQX_NAME=emqx
- EMQX_HOST=localhost
ports:
- "1883:1883"
- "8083:8083"
- "8084:8084"
- "18083:18083"
volumes:
- emqx_data:/opt/emqx/data
- emqx_log:/opt/emqx/log
networks:
- release-network
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
adminer:
image: ${ADMINER_IMAGE:-adminer}
container_name: cn-universal-adminer
restart: unless-stopped
ports:
- "8081:8080"
environment:
- ADMINER_DEFAULT_SERVER=mysql
depends_on:
- mysql
networks:
- release-network
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
volumes:
mysql_data:
redis_data:
emqx_data:
emqx_log:
backend_logs:
networks:
release-network:
driver: bridge
-80
View File
@@ -1,80 +0,0 @@
### 📅 2025年9月第4周(9.20-9.23)
- 🔧 【产品管理优化】
- ✅ MQTT和TCP产品默认开启自动注册功能
- ✅ 完善产品管理连接信息显示,解决无法找到入口问题
- ✅ 系统支持使用内置连接和自建连接
- ✅ 优化TCP连接信息显示,支持SNI信息和概念
- ✅ TCP服务默认绑定网络服务,支持绑定状态管理
- 🏠 【网关设备管理】
- ✅ 网关与网关子设备功能调整,支持一个网关绑定多个不同产品的子设备
- ✅ 网关子设备显示绑定网关设备信息
- ✅ 乐橙设备增删改查增加验证机制
- 📹 【视频模块优化】
- ✅ 乐橙播放器界面优化
- ✅ 视频模块权限调整
- ✅ 真实设备播放摄像头功能修复
- ✅ 暂时移除音频检查功能
- 🛠️ 【系统优化与修复】
- ✅ 移除fastjson2依赖,减少系统间强依赖
- ✅ 调整依赖注入方式,修复无效bean注入问题
- ✅ 优化查询条件与索引匹配
- ✅ 修复test环境显示问题
- ✅ 清理无用代码和文档
- 📝 【文档与描述】
- ✅ 删除部分markdown设计过程文档
- ✅ 调整描述文字和界面显示
### 📅 2025年9月第3周(9.12-9.19)
- 🧩 【设备协议扩展】
- ✅ 新增 UDP 通信模块(默认开启),适配 UDP 协议传输
- ✅ 新增 Ezviz(萤石)接入模块,支持萤石设备接入
- ✅ 优化 imoulife(乐橙)模块,支持自有开放平台账号
- 🧠 【设备影子系统】
- ✅ 增加设备影子强制刷盘机制,支持异常状态恢复
- ✅ 解析流程可获取历史影子数据(零代码侵入联动判断)
- ✅ Web IDE 支持直接读取设备影子数据
- 🔌 【连接管理优化】
- ✅ 设备重连时自动替换旧连接,解决僵尸连接问题
- ✅ 重构 TCP 通信逻辑(tcpdown 模块),提升可维护性
- ⚙️ 【性能与稳定性】
- ✅ 修复产品缓存不失效问题,优化数据库查询效率
- ✅ 日志表结构升级,支持自动分区
- ✅ 完善集群消息日志存储逻辑,避免指令路由异常
- 🧰 【工具与配置】
- ✅ 封装统一工具类(uniqueId 生成、时间格式化等)
- ✅ 公共配置支持 boolean 类型适配
- ✅ 修复时间格式化、枚举命名重复等问题
### 📅 2025年9月第2周(9.8-9.12)
- 🔧 【零代码侵入-TCP接入】解决电表DT645使用netty协议半包全包的问题,增加一个codec和2个工具类。
- 🛠️ 【WEB-IDE调试器】增加16进制、ASCII和Modbus相关等20余个公共方法,供IDE的直接调用。
- 🔄 【cluster集群】集群环境低概率会遇到指令路由错误的问题。
- ⚡ 【优化若干】重构iotId的生成逻辑,极大较少数据库的非必要查询。
- 📸 【产品管理】增加产品图片上传,增加七牛云。
### 📅 2025年9月第1周(9.1-9.7)
- 🚀 【设备影子】设备影子热数据不再实时更新数据库,用redis缓存,定时刷库,提高吞吐量。
- 🌐 【北向应用】HTTP北向应用数据推送问题修复若干、推送安全鉴权功能增强。
- 🛡️ 【TCP接入服务】增加异常IP的封禁策略;集群环境的控制重启、关闭、启动优化。
- 📊 【流程编排】增加可视化的集成,为工业场景及特殊情况的接入、采集和推送作为补充。
- 🔧 【其他】修复错误若干;优化日志;
Binary file not shown.