纳入范围: - backend/ Spring Boot 多模块后端(iot-common/device/rule/data/alarm/auth) - frontend/admin/ Vue3 + Element Plus 管理后台 - Android/ 涂鸦原生 APP (com.xhai.iot) - backend/sql/ Flyway 风格迁移脚本(V2~V21) - docs/ 对接文档与设计文档 排除范围: - 构建产物: node_modules/ target/ build/ dist/ .gradle/ - 签名密钥: *.jks *.keystore (严禁入库) - 本机配置: Android/local.properties - 运行日志: logs/ *.log - AI 协作本地数据 .codebuddy/ 与第三方 demo tuya-demo/ .gitattributes 统一以 LF 存储, Windows 批处理保留 CRLF
141 lines
3.8 KiB
YAML
141 lines
3.8 KiB
YAML
version: '3.8'
|
||
|
||
# IoT平台开发环境(端口错开本机OpenCart占用)
|
||
# 本机占用:80(OpenCart), 3306(MySQL5.7), 8080(Adminer), 8081(phpMyAdmin)
|
||
|
||
services:
|
||
# MySQL数据库(8.0)- 端口:33060
|
||
mysql:
|
||
image: mysql:8.0
|
||
container_name: iot-mysql
|
||
restart: always
|
||
environment:
|
||
MYSQL_ROOT_PASSWORD: IoT.p2026.Xk9Qm
|
||
MYSQL_DATABASE: iot_platform
|
||
TZ: Asia/Shanghai
|
||
ports:
|
||
- "127.0.0.1:3386:3306" # 仅本机可达,避免公网暴露
|
||
volumes:
|
||
- mysql-data:/var/lib/mysql
|
||
- ../backend/sql/init.sql:/docker-entrypoint-initdb.d/init.sql
|
||
command:
|
||
--default-authentication-plugin=mysql_native_password
|
||
--character-set-server=utf8mb4
|
||
--collation-server=utf8mb4_unicode_ci
|
||
networks:
|
||
- iot-network
|
||
|
||
# Redis缓存 - 端口:6379(无冲突)
|
||
redis:
|
||
image: redis:7-alpine
|
||
container_name: iot-redis
|
||
restart: always
|
||
ports:
|
||
- "6379:6379"
|
||
volumes:
|
||
- redis-data:/data
|
||
command: redis-server --appendonly yes
|
||
networks:
|
||
- iot-network
|
||
|
||
# RabbitMQ消息队列 - 端口:5672, 15673
|
||
rabbitmq:
|
||
image: rabbitmq:3.12-management
|
||
container_name: iot-rabbitmq
|
||
restart: always
|
||
environment:
|
||
RABBITMQ_DEFAULT_USER: guest
|
||
RABBITMQ_DEFAULT_PASS: guest
|
||
ports:
|
||
- "5672:5672" # AMQP(无冲突)
|
||
- "15673:15672" # 管理界面(错开15672)
|
||
volumes:
|
||
- rabbitmq-data:/var/lib/rabbitmq
|
||
networks:
|
||
- iot-network
|
||
|
||
# EMQX MQTT Broker - 端口:1883, 8084, 18084
|
||
emqx:
|
||
image: emqx/emqx:5.5
|
||
container_name: iot-emqx
|
||
restart: always
|
||
ports:
|
||
- "1883:1883" # MQTT(无冲突)
|
||
- "8883:8883" # MQTT SSL
|
||
- "8084:8083" # WebSocket(错开8083)
|
||
- "18084:18083" # Dashboard(错开18083)
|
||
environment:
|
||
- EMQX_NAME=emqx
|
||
- EMQX_HOST=127.0.0.1
|
||
- EMQX_DASHBOARD__DEFAULT_PASSWORD=public
|
||
volumes:
|
||
- emqx-data:/opt/emqx/data
|
||
- emqx-log:/opt/emqx/log
|
||
networks:
|
||
- iot-network
|
||
|
||
# InfluxDB时序数据库 - 端口:8083
|
||
influxdb:
|
||
image: influxdb:2.7
|
||
container_name: iot-influxdb
|
||
restart: always
|
||
environment:
|
||
DOCKER_INFLUXDB_INIT_MODE: setup
|
||
DOCKER_INFLUXDB_INIT_USERNAME: admin
|
||
DOCKER_INFLUXDB_INIT_PASSWORD: admin123456
|
||
DOCKER_INFLUXDB_INIT_ORG: iot-platform
|
||
DOCKER_INFLUXDB_INIT_BUCKET: device-data
|
||
DOCKER_INFLUXDB_INIT_RETENTION: 30d
|
||
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: iot-platform-token-2026
|
||
ports:
|
||
- "8083:8086" # 错开8086
|
||
volumes:
|
||
- influxdb-data:/var/lib/influxdb2
|
||
- influxdb-config:/etc/influxdb2
|
||
networks:
|
||
- iot-network
|
||
|
||
# XXL-Job调度中心 - 端口:8082
|
||
xxl-job-admin:
|
||
image: xuxueli/xxl-job-admin:2.4.0
|
||
container_name: iot-xxl-job-admin
|
||
restart: always
|
||
environment:
|
||
PARAMS: '--spring.datasource.url=jdbc:mysql://mysql:3306/iot_platform?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai --spring.datasource.username=root --spring.datasource.password=IoT.p2026.Xk9Qm'
|
||
ports:
|
||
- "8082:8080" # 错开本机8080
|
||
depends_on:
|
||
- mysql
|
||
networks:
|
||
- iot-network
|
||
|
||
# Grafana可视化 - 端口:3001
|
||
grafana:
|
||
image: grafana/grafana:10.4.0
|
||
container_name: iot-grafana
|
||
restart: always
|
||
ports:
|
||
- "3001:3000" # 错开3000
|
||
environment:
|
||
GF_SECURITY_ADMIN_USER: admin
|
||
GF_SECURITY_ADMIN_PASSWORD: admin
|
||
GF_INSTALL_PLUGINS: grafana-clock-panel,grafana-simple-json-datasource
|
||
volumes:
|
||
- grafana-data:/var/lib/grafana
|
||
networks:
|
||
- iot-network
|
||
|
||
volumes:
|
||
mysql-data:
|
||
redis-data:
|
||
rabbitmq-data:
|
||
emqx-data:
|
||
emqx-log:
|
||
influxdb-data:
|
||
influxdb-config:
|
||
grafana-data:
|
||
|
||
networks:
|
||
iot-network:
|
||
driver: bridge
|