优化redis和sql组件的项目引入路径,解决初始化数据异常的问题。
This commit is contained in:
parent
659297937c
commit
3c5f21f31a
28
DockerComposeShells/.env
Normal file
28
DockerComposeShells/.env
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# 服务器配置
|
||||||
|
SERVER_IP=47.110.53.196
|
||||||
|
|
||||||
|
# Pulsar配置
|
||||||
|
PULSAR_BROKER_PORT=9093
|
||||||
|
PULSAR_ADMIN_PORT=9094
|
||||||
|
PULSAR_ZOOKEEPER_PORT=2181
|
||||||
|
|
||||||
|
# IoTDB配置
|
||||||
|
IOTDB_PORT=30710
|
||||||
|
|
||||||
|
# Redis配置
|
||||||
|
REDIS_PORT=30712
|
||||||
|
|
||||||
|
# MySQL配置
|
||||||
|
MYSQL_PORT=13306
|
||||||
|
|
||||||
|
# Admin API配置
|
||||||
|
ADMIN_API_PORT=28080
|
||||||
|
|
||||||
|
# Admin Web配置
|
||||||
|
ADMIN_WEB_PORT=30711
|
||||||
|
|
||||||
|
# 认证信息
|
||||||
|
PULSAR_ADMIN_USER=admin
|
||||||
|
PULSAR_ADMIN_PASSWORD=0fd7afb8b0d04e6abc4fdfdac2190a79
|
||||||
|
IOTDB_ROOT_PASSWORD=Lixiao@1980
|
||||||
|
MYSQL_ROOT_PASSWORD=JiShe!aqG#5kGgh&0
|
||||||
146
DockerComposeShells/README.md
Normal file
146
DockerComposeShells/README.md
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
# Docker Compose 部署说明
|
||||||
|
|
||||||
|
## 概述
|
||||||
|
这是一个基于Docker Compose的微服务部署方案,包含以下服务:
|
||||||
|
- Pulsar 消息队列集群
|
||||||
|
- IoTDB 时序数据库
|
||||||
|
- Redis 缓存服务
|
||||||
|
- MySQL 关系数据库
|
||||||
|
- Admin API 管理接口
|
||||||
|
- Admin Web 管理界面
|
||||||
|
|
||||||
|
## 快速开始
|
||||||
|
|
||||||
|
### 1. 配置环境变量
|
||||||
|
复制 `env.example` 为 `.env` 并修改配置:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp env.example .env
|
||||||
|
# 编辑 .env 文件,修改服务器IP地址等配置
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 启动服务
|
||||||
|
```bash
|
||||||
|
# 给启动脚本添加执行权限
|
||||||
|
chmod +x start-pulsar.sh
|
||||||
|
|
||||||
|
# 启动所有服务
|
||||||
|
./start-pulsar.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 查看服务状态
|
||||||
|
```bash
|
||||||
|
docker-compose -f docker-compose.yml ps
|
||||||
|
```
|
||||||
|
|
||||||
|
## 配置说明
|
||||||
|
|
||||||
|
### 环境变量配置 (.env)
|
||||||
|
|
||||||
|
| 变量名 | 说明 | 默认值 |
|
||||||
|
|--------|------|--------|
|
||||||
|
| `SERVER_IP` | 服务器公网IP地址 | 47.110.53.196 |
|
||||||
|
| `PULSAR_BROKER_PORT` | Pulsar Broker端口 | 9093 |
|
||||||
|
| `PULSAR_ADMIN_PORT` | Pulsar Admin端口 | 9094 |
|
||||||
|
| `IOTDB_PORT` | IoTDB端口 | 30710 |
|
||||||
|
| `REDIS_PORT` | Redis端口 | 30712 |
|
||||||
|
| `MYSQL_PORT` | MySQL端口 | 13306 |
|
||||||
|
| `ADMIN_API_PORT` | Admin API端口 | 28080 |
|
||||||
|
| `ADMIN_WEB_PORT` | Admin Web端口 | 30711 |
|
||||||
|
| `PULSAR_ADMIN_USER` | Pulsar管理员用户名 | admin |
|
||||||
|
| `PULSAR_ADMIN_PASSWORD` | Pulsar管理员密码 | 0fd7afb8b0d04e6abc4fdfdac2190a79 |
|
||||||
|
| `IOTDB_ROOT_PASSWORD` | IoTDB root用户密码 | Lixiao@1980 |
|
||||||
|
| `MYSQL_ROOT_PASSWORD` | MySQL root用户密码 | JiShe!aqG#5kGgh&0 |
|
||||||
|
|
||||||
|
### 端口映射
|
||||||
|
|
||||||
|
| 服务 | 容器端口 | 宿主机端口 | 说明 |
|
||||||
|
|------|----------|------------|------|
|
||||||
|
| Zookeeper | 2181 | 2181 | Pulsar集群协调服务 |
|
||||||
|
| Pulsar Broker | 9093 | 9093 | Pulsar消息服务 |
|
||||||
|
| Pulsar Admin | 9094 | 9094 | Pulsar管理接口 |
|
||||||
|
| IoTDB | 6667 | 30710 | 时序数据库 |
|
||||||
|
| Redis | 6379 | 30712 | 缓存服务 |
|
||||||
|
| MySQL | 3306 | 13306 | 关系数据库 |
|
||||||
|
| Admin API | 10500 | 28080 | 管理接口 |
|
||||||
|
| Admin Web | 8080 | 30711 | 管理界面 |
|
||||||
|
|
||||||
|
## 部署到新服务器
|
||||||
|
|
||||||
|
### 1. 修改配置文件
|
||||||
|
编辑 `.env` 文件,修改以下关键配置:
|
||||||
|
```bash
|
||||||
|
# 修改为你的服务器IP地址
|
||||||
|
SERVER_IP=你的服务器IP地址
|
||||||
|
|
||||||
|
# 根据需要修改端口(避免端口冲突)
|
||||||
|
PULSAR_BROKER_PORT=9093
|
||||||
|
PULSAR_ADMIN_PORT=9094
|
||||||
|
# ... 其他端口配置
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 启动服务
|
||||||
|
```bash
|
||||||
|
./start-pulsar.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 验证部署
|
||||||
|
脚本会自动显示连接信息,包括:
|
||||||
|
- 各服务的访问地址
|
||||||
|
- 用户名和密码
|
||||||
|
- 测试连接命令
|
||||||
|
|
||||||
|
## 常用命令
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 查看服务状态
|
||||||
|
docker-compose -f docker-compose.yml ps
|
||||||
|
|
||||||
|
# 查看服务日志
|
||||||
|
docker-compose -f docker-compose.yml logs -f [服务名]
|
||||||
|
|
||||||
|
# 停止所有服务
|
||||||
|
docker-compose -f docker-compose.yml down
|
||||||
|
|
||||||
|
# 重启特定服务
|
||||||
|
docker-compose -f docker-compose.yml restart [服务名]
|
||||||
|
|
||||||
|
# 查看服务资源使用情况
|
||||||
|
docker stats
|
||||||
|
```
|
||||||
|
|
||||||
|
## 故障排除
|
||||||
|
|
||||||
|
### 1. 端口冲突
|
||||||
|
如果遇到端口冲突,修改 `config.env` 中的端口配置,然后重启服务。
|
||||||
|
|
||||||
|
### 2. 权限问题
|
||||||
|
确保脚本有执行权限:
|
||||||
|
```bash
|
||||||
|
chmod +x start-pulsar.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 磁盘空间
|
||||||
|
确保有足够的磁盘空间用于数据存储:
|
||||||
|
```bash
|
||||||
|
df -h
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. 服务启动顺序
|
||||||
|
服务启动顺序由 `depends_on` 配置控制,如果某个服务启动失败,检查依赖服务是否正常。
|
||||||
|
|
||||||
|
## 安全建议
|
||||||
|
|
||||||
|
1. 修改默认密码
|
||||||
|
2. 限制网络访问
|
||||||
|
3. 定期更新镜像
|
||||||
|
4. 监控服务状态
|
||||||
|
5. 备份重要数据
|
||||||
|
|
||||||
|
## 支持
|
||||||
|
|
||||||
|
如有问题,请检查:
|
||||||
|
1. Docker和Docker Compose版本
|
||||||
|
2. 系统资源是否充足
|
||||||
|
3. 网络配置是否正确
|
||||||
|
4. 日志信息中的错误提示
|
||||||
100
DockerComposeShells/adminapi/conf/appsettings.Development.json
Normal file
100
DockerComposeShells/adminapi/conf/appsettings.Development.json
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
{
|
||||||
|
"App": {
|
||||||
|
"SelfUrl": "http://localhost:44315",
|
||||||
|
"CorsOrigins": "https://*.IoT.com,http://localhost:4200,http://localhost:3100,http://localhost:80,http://10.10.70.11:4200,http://47.110.53.196:30711"
|
||||||
|
},
|
||||||
|
"ConnectionStrings": {
|
||||||
|
"Default": "Data Source=mysql;Port=3306;Database=JiSheIoTProDB;uid=root;pwd=JiShe!aqG#5kGgh&0;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true;"
|
||||||
|
// // 正式
|
||||||
|
// "PrepayDB": "server=rm-m5el3d1u1k0wzk70n2o.sqlserver.rds.aliyuncs.com,3433;database=jishe.sysdb;uid=v3sa;pwd=JiShe123;Encrypt=False;Trust Server Certificate=False",
|
||||||
|
// "EnergyDB": "server=rm-wz9hw529i3j1e3b5fbo.sqlserver.rds.aliyuncs.com,3433;database=db_energy;uid=yjdb;pwd=Kdjdhf+9*7ad222LL;Encrypt=False;Trust Server Certificate=False"
|
||||||
|
},
|
||||||
|
"Hangfire": {
|
||||||
|
"Redis": {
|
||||||
|
"Host": "redis:6379,password=1q3J@BGf!yhTaD46nS#",
|
||||||
|
"DB": "2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"Redis": {
|
||||||
|
"Configuration": "redis:6379,defaultdatabase=5,password=1q3J@BGf!yhTaD46nS#"
|
||||||
|
},
|
||||||
|
"Kafka": {
|
||||||
|
"BootstrapServers": "47.110.62.104:9094,47.110.53.196:9094,47.110.60.222:9094",
|
||||||
|
"EnableFilter": true,
|
||||||
|
"EnableAuthorization": false,
|
||||||
|
"SaslUserName": "lixiao",
|
||||||
|
"SaslPassword": "lixiao@1980",
|
||||||
|
"KafkaReplicationFactor": 3,
|
||||||
|
"NumPartitions": 30,
|
||||||
|
"TaskThreadCount": -1
|
||||||
|
},
|
||||||
|
"Pulsar": {
|
||||||
|
"ServiceUrl": "pulsar://pulsar-broker:9093",
|
||||||
|
"WebUrl": "http://pulsar-broker:9094",
|
||||||
|
"UserName": "admin",
|
||||||
|
"TenantName": "1YMVZZkAkRArjxSD8457",
|
||||||
|
"Namespace": "OneNET",
|
||||||
|
"PulsarSecretKey": "0fd7afb8b0d04e6abc4fdfdac2190a79",
|
||||||
|
"PulsarSubscriptionCustomName": "sub",
|
||||||
|
"EnableTls": false,
|
||||||
|
"ValidateServerCertificate": false,
|
||||||
|
"ConnectionTimeout": 30,
|
||||||
|
"OperationTimeout": 30,
|
||||||
|
"KeepAliveInterval": 30,
|
||||||
|
"TaskThreadCount": 1,
|
||||||
|
"IsSubscriber": true,
|
||||||
|
"DefaultPartitions": 16,
|
||||||
|
"DefaultBundles": 16,
|
||||||
|
"EnableAutoCreation": true, //开启自动创建Topic
|
||||||
|
"TopicMode": "Static", //Dynamic 主题模式
|
||||||
|
"EnableTopicTypeFilter": true, //允许Topic类型过滤
|
||||||
|
"AllowedTopicTypes": [ "Static" ], //允许的Topic类型
|
||||||
|
"AllowedClusters": [ "pulsar-cluster-1" ], //允许的集群
|
||||||
|
"AdminRoles": [ "admin" ],
|
||||||
|
"EnableConsumerIdleCleanup": true,
|
||||||
|
"ConsumerIdleCleanupMinutes": 120,
|
||||||
|
"EnableProducerIdleCleanup": true,
|
||||||
|
"ProducerIdleCleanupMinutes": 60
|
||||||
|
},
|
||||||
|
"IoTDBOptions": {
|
||||||
|
"UserName": "root",
|
||||||
|
"Password": "Lixiao@1980",
|
||||||
|
"TreeModelClusterList": [ "iotdb-standalone:6667" ],
|
||||||
|
"TableModelClusterList": [ "iotdb-standalone:6667" ],
|
||||||
|
"PoolSize": 32,
|
||||||
|
"DataBaseName": "jisheiotdata",
|
||||||
|
"OpenDebugMode": true,
|
||||||
|
"UseTableSessionPoolByDefault": false
|
||||||
|
},
|
||||||
|
"ServerApplicationOptions": {
|
||||||
|
"ServerTagName": "JiSheCollectBus01",
|
||||||
|
"FirstCollectionTime": "2025-04-28 15:07:00",
|
||||||
|
"AutomaticVerificationTime": "16:07:00",
|
||||||
|
"AutomaticTerminalVersionTime": "17:07:00",
|
||||||
|
"AutomaticTelematicsModuleTime": "17:30:00",
|
||||||
|
"AutomaticDayFreezeTime": "02:30:00",
|
||||||
|
"AutomaticMonthFreezeTime": "03:30:00",
|
||||||
|
"DefaultProtocolPlugin": "T37612012ProtocolPlugin",
|
||||||
|
"VerifySignatureToken": "SIcPQnpMgaFDmNlIjNmzq5smshz7cKrh",
|
||||||
|
"DistributedMessage": 2
|
||||||
|
},
|
||||||
|
"Jwt": {
|
||||||
|
"Audience": "JiShe.IoT",
|
||||||
|
"SecurityKey": "dzehzRz9a8asdfaf43ghVD@d#fasdfaf567sdadfasdf=",
|
||||||
|
"Issuer": "JiShe.IoT",
|
||||||
|
"ExpirationTime": 2
|
||||||
|
},
|
||||||
|
"FreeRedisOptions": {
|
||||||
|
"ConnectionString": "redis:6379,password=1q3J@BGf!yhTaD46nS#,abortConnect=false,connectTimeout=30000,allowAdmin=true,maxPoolSize=500,defaultdatabase=14",
|
||||||
|
"UseDistributedCache": true
|
||||||
|
},
|
||||||
|
"FreeSqlProviderOptions": {
|
||||||
|
"UsePrepayDB": false,
|
||||||
|
"UseEnergyDB": false,
|
||||||
|
"PrintLog": false
|
||||||
|
},
|
||||||
|
"OneNETSecureReceiveOptions": {
|
||||||
|
"OneNETVerifySignatureToken": "SIcPQnpMgaFDmNlIjNmzq5smshz7cKrh",
|
||||||
|
"OneNETAesKey": "RPTEIGCA1KvDEXS1"
|
||||||
|
}
|
||||||
|
}
|
||||||
38
DockerComposeShells/adminapi/conf/appsettings.json
Normal file
38
DockerComposeShells/adminapi/conf/appsettings.json
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
{
|
||||||
|
"Serilog": {
|
||||||
|
"Using": [
|
||||||
|
"Serilog.Sinks.Console",
|
||||||
|
"Serilog.Sinks.File"
|
||||||
|
],
|
||||||
|
"MinimumLevel": {
|
||||||
|
"Default": "Warning",
|
||||||
|
"Override": {
|
||||||
|
"Microsoft": "Warning",
|
||||||
|
"Volo.Abp": "Warning",
|
||||||
|
"Hangfire": "Warning",
|
||||||
|
"DotNetCore.CAP": "Warning",
|
||||||
|
"Serilog.AspNetCore": "Warning",
|
||||||
|
"Microsoft.EntityFrameworkCore": "Warning",
|
||||||
|
"Microsoft.AspNetCore": "Warning"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"WriteTo": [
|
||||||
|
{
|
||||||
|
"Name": "Console"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "File",
|
||||||
|
"Args": {
|
||||||
|
"path": "logs/logs-.txt",
|
||||||
|
"rollingInterval": "Hour"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ExcludeSwaggerGroup": [
|
||||||
|
"FileManagement",
|
||||||
|
"NotificationManagement",
|
||||||
|
"CodeManagement",
|
||||||
|
"TemplateManagement"
|
||||||
|
] // 排除Swagger分组
|
||||||
|
}
|
||||||
36
DockerComposeShells/docker-compose-iotdb-standalone.yml
Normal file
36
DockerComposeShells/docker-compose-iotdb-standalone.yml
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
services:
|
||||||
|
iotdb-standalone:
|
||||||
|
image: registry.cn-qingdao.aliyuncs.com/jisheyun/iotdb:2.0.4-standalone
|
||||||
|
hostname: iotdb-standalone
|
||||||
|
container_name: iotdb-standalone
|
||||||
|
restart: "no"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "8"
|
||||||
|
memory: 16g
|
||||||
|
ports:
|
||||||
|
- "30710:6667"
|
||||||
|
environment:
|
||||||
|
- cn_internal_address=iotdb-standalone
|
||||||
|
- cn_internal_port=10710
|
||||||
|
- cn_consensus_port=10720
|
||||||
|
- cn_seed_config_node=iotdb-standalone:10710
|
||||||
|
- dn_rpc_address=iotdb-standalone
|
||||||
|
- dn_internal_address=iotdb-standalone
|
||||||
|
- dn_rpc_port=6667
|
||||||
|
- dn_internal_port=10730
|
||||||
|
- dn_mpp_data_exchange_port=10740
|
||||||
|
- dn_schema_region_consensus_port=10750
|
||||||
|
- dn_data_region_consensus_port=10760
|
||||||
|
- dn_seed_config_node=iotdb-standalone:10710
|
||||||
|
privileged: true
|
||||||
|
volumes:
|
||||||
|
- ./iotdb/data:/iotdb/data
|
||||||
|
- ./iotdb/logs:/iotdb/logs
|
||||||
|
networks:
|
||||||
|
- iotdb-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
iotdb-net:
|
||||||
|
driver: bridge
|
||||||
319
DockerComposeShells/docker-compose.yml
Normal file
319
DockerComposeShells/docker-compose.yml
Normal file
@ -0,0 +1,319 @@
|
|||||||
|
services:
|
||||||
|
zookeeper:
|
||||||
|
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6
|
||||||
|
container_name: zookeeper
|
||||||
|
hostname: zookeeper
|
||||||
|
restart: unless-stopped
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "2"
|
||||||
|
memory: 2g
|
||||||
|
command: >
|
||||||
|
/bin/bash -c
|
||||||
|
"bin/apply-config-from-env.py conf/zookeeper.conf &&
|
||||||
|
bin/pulsar zookeeper"
|
||||||
|
environment:
|
||||||
|
- PULSAR_MEM=-Xms512m -Xmx512m -Dcom.sun.management.jmxremote -Djute.maxbuffer=10485760
|
||||||
|
ports:
|
||||||
|
- "${PULSAR_ZOOKEEPER_PORT}:${PULSAR_ZOOKEEPER_PORT}"
|
||||||
|
networks:
|
||||||
|
- pulsar-net
|
||||||
|
volumes:
|
||||||
|
- pulsar-zookeeper-data:/pulsar/data/zookeeper
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "bin/pulsar-zookeeper-ruok.sh"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
|
start_period: 60s
|
||||||
|
|
||||||
|
pulsar-cluster-init:
|
||||||
|
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6
|
||||||
|
container_name: pulsar-cluster-init
|
||||||
|
hostname: pulsar-cluster-init
|
||||||
|
command: >
|
||||||
|
/bin/bash -c
|
||||||
|
"bin/pulsar initialize-cluster-metadata --cluster pulsar-cluster-1 --zookeeper zookeeper:${PULSAR_ZOOKEEPER_PORT} --configuration-store zookeeper:${PULSAR_ZOOKEEPER_PORT} --web-service-url http://\${SERVER_IP}:\${PULSAR_ADMIN_PORT} --broker-service-url pulsar://\${SERVER_IP}:\${PULSAR_BROKER_PORT} || echo 'Cluster metadata already exists'"
|
||||||
|
depends_on:
|
||||||
|
zookeeper:
|
||||||
|
condition: service_healthy
|
||||||
|
networks:
|
||||||
|
- pulsar-net
|
||||||
|
|
||||||
|
bookie:
|
||||||
|
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6
|
||||||
|
container_name: pulsar-bookie
|
||||||
|
hostname: pulsar-bookie
|
||||||
|
restart: unless-stopped
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "2"
|
||||||
|
memory: 2g
|
||||||
|
command: >
|
||||||
|
/bin/bash -c
|
||||||
|
"bin/apply-config-from-env.py conf/bookkeeper.conf &&
|
||||||
|
(bin/bookkeeper shell metaformat -n --force || echo 'Bookie already formatted') &&
|
||||||
|
bin/pulsar bookie"
|
||||||
|
environment:
|
||||||
|
- PULSAR_MEM=-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g
|
||||||
|
- BOOKIE_MEM=-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g
|
||||||
|
- PULSAR_PREFIX_zkServers=zookeeper:${PULSAR_ZOOKEEPER_PORT}
|
||||||
|
depends_on:
|
||||||
|
zookeeper:
|
||||||
|
condition: service_healthy
|
||||||
|
pulsar-cluster-init:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
networks:
|
||||||
|
- pulsar-net
|
||||||
|
volumes:
|
||||||
|
- pulsar-bookkeeper-data:/pulsar/data/bookkeeper
|
||||||
|
|
||||||
|
broker:
|
||||||
|
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6
|
||||||
|
container_name: pulsar-broker
|
||||||
|
hostname: pulsar-broker
|
||||||
|
restart: unless-stopped
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "2"
|
||||||
|
memory: 2g
|
||||||
|
command: >
|
||||||
|
/bin/bash -c
|
||||||
|
"bin/apply-config-from-env.py conf/broker.conf && bin/pulsar broker"
|
||||||
|
environment:
|
||||||
|
- PULSAR_MEM=-Xms1g -Xmx1g -XX:MaxDirectMemorySize=1g
|
||||||
|
- PULSAR_PREFIX_clusterName=pulsar-cluster-1
|
||||||
|
- PULSAR_PREFIX_zookeeperServers=zookeeper:${PULSAR_ZOOKEEPER_PORT}
|
||||||
|
- PULSAR_PREFIX_configurationStoreServers=zookeeper:${PULSAR_ZOOKEEPER_PORT}
|
||||||
|
- PULSAR_PREFIX_bookkeeperClientPort=3181
|
||||||
|
- PULSAR_PREFIX_brokerServicePort=${PULSAR_BROKER_PORT}
|
||||||
|
- PULSAR_PREFIX_webServicePort=${PULSAR_ADMIN_PORT}
|
||||||
|
- PULSAR_PREFIX_advertisedAddress=${SERVER_IP}
|
||||||
|
- PULSAR_PREFIX_managedLedgerDefaultEnsembleSize=1
|
||||||
|
- PULSAR_PREFIX_managedLedgerDefaultWriteQuorum=1
|
||||||
|
- PULSAR_PREFIX_managedLedgerDefaultAckQuorum=1
|
||||||
|
- PULSAR_PREFIX_allowAutoTopicCreation=true
|
||||||
|
# 启用非持久化主题
|
||||||
|
- PULSAR_PREFIX_enableNonPersistentTopics=true
|
||||||
|
# 基本认证配置
|
||||||
|
- PULSAR_PREFIX_authenticationEnabled=true
|
||||||
|
- PULSAR_PREFIX_authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderBasic
|
||||||
|
- PULSAR_PREFIX_basicAuthConf=file:///pulsar/auth/.htpasswd
|
||||||
|
# Broker自身的认证配置
|
||||||
|
- PULSAR_PREFIX_brokerClientAuthenticationPlugin=org.apache.pulsar.client.impl.auth.AuthenticationBasic
|
||||||
|
- PULSAR_PREFIX_brokerClientAuthenticationParameters={"userId":"${PULSAR_ADMIN_USER}","password":"${PULSAR_ADMIN_PASSWORD}"}
|
||||||
|
# 授权配置
|
||||||
|
- PULSAR_PREFIX_authorizationEnabled=false
|
||||||
|
- PULSAR_PREFIX_allowAutoTopicCreationType=partitioned
|
||||||
|
- PULSAR_PREFIX_allowAnonymousAccess=false
|
||||||
|
# 非持久化主题特殊配置
|
||||||
|
- PULSAR_PREFIX_allowNonPersistentTopics=true
|
||||||
|
- PULSAR_PREFIX_nonPersistentTopicsEnabled=true
|
||||||
|
ports:
|
||||||
|
- "${PULSAR_BROKER_PORT}:${PULSAR_BROKER_PORT}"
|
||||||
|
- "${PULSAR_ADMIN_PORT}:${PULSAR_ADMIN_PORT}"
|
||||||
|
depends_on:
|
||||||
|
zookeeper:
|
||||||
|
condition: service_healthy
|
||||||
|
bookie:
|
||||||
|
condition: service_started
|
||||||
|
pulsar-cluster-init:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
networks:
|
||||||
|
- pulsar-net
|
||||||
|
volumes:
|
||||||
|
- pulsar-broker-data:/pulsar/data
|
||||||
|
- ./pulsar/auth:/pulsar/auth
|
||||||
|
|
||||||
|
pulsar-init:
|
||||||
|
image: registry.cn-qingdao.aliyuncs.com/jisheyun/pulsar:4.0.6
|
||||||
|
container_name: pulsar-init
|
||||||
|
hostname: pulsar-init
|
||||||
|
command: >
|
||||||
|
/bin/bash -c
|
||||||
|
"
|
||||||
|
# 等待broker就绪
|
||||||
|
until bin/pulsar-admin --admin-url http://pulsar-broker:${PULSAR_ADMIN_PORT} --auth-plugin org.apache.pulsar.client.impl.auth.AuthenticationBasic --auth-params '{\"userId\":\"\${PULSAR_ADMIN_USER}\",\"password\":\"\${PULSAR_ADMIN_PASSWORD}\"}' clusters list; do
|
||||||
|
echo 'Waiting for Pulsar broker to be ready...'
|
||||||
|
sleep 5
|
||||||
|
done;
|
||||||
|
|
||||||
|
# 创建租户和命名空间
|
||||||
|
bin/pulsar-admin --admin-url http://pulsar-broker:${PULSAR_ADMIN_PORT} --auth-plugin org.apache.pulsar.client.impl.auth.AuthenticationBasic --auth-params '{\"userId\":\"\${PULSAR_ADMIN_USER}\",\"password\":\"\${PULSAR_ADMIN_PASSWORD}\"}' tenants create public --allowed-clusters pulsar-cluster-1 -r admin || echo 'Tenant public already exists';
|
||||||
|
bin/pulsar-admin --admin-url http://pulsar-broker:${PULSAR_ADMIN_PORT} --auth-plugin org.apache.pulsar.client.impl.auth.AuthenticationBasic --auth-params '{\"userId\":\"\${PULSAR_ADMIN_USER}\",\"password\":\"\${PULSAR_ADMIN_PASSWORD}\"}' namespaces create public/default || echo 'Namespace public/default already exists';
|
||||||
|
|
||||||
|
# 创建非持久化主题
|
||||||
|
bin/pulsar-admin --admin-url http://pulsar-broker:${PULSAR_ADMIN_PORT} --auth-plugin org.apache.pulsar.client.impl.auth.AuthenticationBasic --auth-params '{\"userId\":\"\${PULSAR_ADMIN_USER}\",\"password\":\"\${PULSAR_ADMIN_PASSWORD}\"}' topics create non-persistent://public/default/default-topic || echo 'Topic non-persistent://public/default/default-topic already exists';
|
||||||
|
|
||||||
|
# 设置命名空间策略
|
||||||
|
echo 'Setting namespace policies...';
|
||||||
|
bin/pulsar-admin --admin-url http://pulsar-broker:${PULSAR_ADMIN_PORT} --auth-plugin org.apache.pulsar.client.impl.auth.AuthenticationBasic --auth-params '{\"userId\":\"\${PULSAR_ADMIN_USER}\",\"password\":\"\${PULSAR_ADMIN_PASSWORD}\"}' namespaces set-subscription-types-enabled public/default --types NonDurable;
|
||||||
|
bin/pulsar-admin --admin-url http://pulsar-broker:${PULSAR_ADMIN_PORT} --auth-plugin org.apache.pulsar.client.impl.auth.AuthenticationBasic --auth-params '{\"userId\":\"\${PULSAR_ADMIN_USER}\",\"password\":\"\${PULSAR_ADMIN_PASSWORD}\"}' namespaces set-message-ttl public/default --messageTTL 0;
|
||||||
|
bin/pulsar-admin --admin-url http://pulsar-broker:${PULSAR_ADMIN_PORT} --auth-plugin org.apache.pulsar.client.impl.auth.AuthenticationBasic --auth-params '{\"userId\":\"\${PULSAR_ADMIN_USER}\",\"password\":\"\${PULSAR_ADMIN_PASSWORD}\"}' namespaces set-retention public/default --sizeLimit -1 --timeLimit -1;
|
||||||
|
|
||||||
|
echo 'Pulsar initialization completed with Basic Authentication!';
|
||||||
|
"
|
||||||
|
depends_on:
|
||||||
|
- broker
|
||||||
|
networks:
|
||||||
|
- pulsar-net
|
||||||
|
|
||||||
|
iotdb-standalone-service:
|
||||||
|
image: registry.cn-qingdao.aliyuncs.com/jisheyun/iotdb:2.0.4-standalone
|
||||||
|
hostname: iotdb-standalone
|
||||||
|
container_name: iotdb-standalone
|
||||||
|
restart: always
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "8"
|
||||||
|
memory: 16g
|
||||||
|
ports:
|
||||||
|
- "${IOTDB_PORT}:6667"
|
||||||
|
environment:
|
||||||
|
- cn_internal_address=iotdb-standalone
|
||||||
|
- cn_internal_port=10710
|
||||||
|
- cn_consensus_port=10720
|
||||||
|
- cn_seed_config_node=iotdb-standalone:10710
|
||||||
|
- dn_rpc_address=iotdb-standalone
|
||||||
|
- dn_internal_address=iotdb-standalone
|
||||||
|
- dn_rpc_port=6667
|
||||||
|
- dn_internal_port=10730
|
||||||
|
- dn_mpp_data_exchange_port=10740
|
||||||
|
- dn_schema_region_consensus_port=10750
|
||||||
|
- dn_data_region_consensus_port=10760
|
||||||
|
- dn_seed_config_node=iotdb-standalone:10710
|
||||||
|
privileged: true
|
||||||
|
volumes:
|
||||||
|
- ./iotdb/conf:/iotdb/conf
|
||||||
|
- ./iotdb/data:/iotdb/data
|
||||||
|
- ./iotdb/logs:/iotdb/logs
|
||||||
|
networks:
|
||||||
|
- pulsar-net
|
||||||
|
|
||||||
|
redis-service:
|
||||||
|
image: registry.cn-qingdao.aliyuncs.com/jisheyun/redis:8.0.2-alpine3.21
|
||||||
|
container_name: redis
|
||||||
|
restart: always
|
||||||
|
hostname: redis
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "2.0"
|
||||||
|
memory: 2g
|
||||||
|
ports:
|
||||||
|
- "${REDIS_PORT}:6379"
|
||||||
|
volumes:
|
||||||
|
- ./redis/outdata:/data
|
||||||
|
- ./redis/conf:/etc/redis/conf
|
||||||
|
command: redis-server /etc/redis/conf/redis.conf
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
|
networks:
|
||||||
|
- pulsar-net
|
||||||
|
|
||||||
|
mysql-service:
|
||||||
|
image: registry.cn-qingdao.aliyuncs.com/jisheyun/mysql:8.4.6
|
||||||
|
container_name: mysql
|
||||||
|
hostname: mysql
|
||||||
|
restart: always
|
||||||
|
privileged: true
|
||||||
|
user: "1000:1000" # 使用宿主机用户ID
|
||||||
|
ports:
|
||||||
|
- "${MYSQL_PORT}:3306"
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
volumes:
|
||||||
|
- ./mysql/log:/var/log/mysql
|
||||||
|
- ./mysql/data:/var/lib/mysql
|
||||||
|
# - ./mysql/init:/docker-entrypoint-initdb.d
|
||||||
|
command:
|
||||||
|
- --character-set-server=utf8mb4
|
||||||
|
- --collation-server=utf8mb4_unicode_ci
|
||||||
|
# - --user=mysql # 确保MySQL以mysql用户运行
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "2.0"
|
||||||
|
memory: 2g
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
|
networks:
|
||||||
|
- pulsar-net
|
||||||
|
|
||||||
|
admin-api-service:
|
||||||
|
image: registry.cn-qingdao.aliyuncs.com/jisheyun/jishe.iot.admin:2025.0827.1536
|
||||||
|
container_name: admin-api
|
||||||
|
hostname: admin-api
|
||||||
|
restart: always
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "2.0"
|
||||||
|
memory: 4g
|
||||||
|
ports:
|
||||||
|
- "${ADMIN_API_PORT}:10500"
|
||||||
|
volumes:
|
||||||
|
- ./adminapi/conf:/app/configs
|
||||||
|
- ./adminapi/logs:/app/logs
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
|
depends_on:
|
||||||
|
- mysql-service
|
||||||
|
- redis-service
|
||||||
|
- iotdb-standalone-service
|
||||||
|
- pulsar-init
|
||||||
|
networks:
|
||||||
|
- pulsar-net
|
||||||
|
|
||||||
|
admin-web-service:
|
||||||
|
image: registry.cn-qingdao.aliyuncs.com/jisheyun/jishe.iot.ui:2025.0819.2313
|
||||||
|
container_name: admin-web
|
||||||
|
hostname: admin-web
|
||||||
|
restart: always
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "1.0"
|
||||||
|
memory: 2g
|
||||||
|
ports:
|
||||||
|
- "${ADMIN_WEB_PORT}:8080"
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
|
depends_on:
|
||||||
|
- admin-api-service
|
||||||
|
networks:
|
||||||
|
- pulsar-net
|
||||||
|
|
||||||
|
networks:
|
||||||
|
pulsar-net:
|
||||||
|
driver: bridge
|
||||||
|
ipam:
|
||||||
|
driver: default
|
||||||
|
config:
|
||||||
|
- subnet: 172.23.0.0/16
|
||||||
|
gateway: 172.23.0.1
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
pulsar-zookeeper-data:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: ./pulsar/zookeeper-data
|
||||||
|
pulsar-bookkeeper-data:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: ./pulsar/bookkeeper-data
|
||||||
|
pulsar-broker-data:
|
||||||
|
driver: local
|
||||||
|
driver_opts:
|
||||||
|
type: none
|
||||||
|
o: bind
|
||||||
|
device: ./pulsar/pulsar-data
|
||||||
29
DockerComposeShells/env.example
Normal file
29
DockerComposeShells/env.example
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# 服务器配置
|
||||||
|
# 修改为你的服务器IP地址
|
||||||
|
SERVER_IP=47.110.53.196
|
||||||
|
|
||||||
|
# Pulsar配置
|
||||||
|
PULSAR_BROKER_PORT=9093
|
||||||
|
PULSAR_ADMIN_PORT=9094
|
||||||
|
PULSAR_ZOOKEEPER_PORT=2181
|
||||||
|
|
||||||
|
# IoTDB配置
|
||||||
|
IOTDB_PORT=30710
|
||||||
|
|
||||||
|
# Redis配置
|
||||||
|
REDIS_PORT=30712
|
||||||
|
|
||||||
|
# MySQL配置
|
||||||
|
MYSQL_PORT=13306
|
||||||
|
|
||||||
|
# Admin API配置
|
||||||
|
ADMIN_API_PORT=28080
|
||||||
|
|
||||||
|
# Admin Web配置
|
||||||
|
ADMIN_WEB_PORT=30711
|
||||||
|
|
||||||
|
# 认证信息
|
||||||
|
PULSAR_ADMIN_USER=admin
|
||||||
|
PULSAR_ADMIN_PASSWORD=0fd7afb8b0d04e6abc4fdfdac2190a79
|
||||||
|
IOTDB_ROOT_PASSWORD=Lixiao@1980
|
||||||
|
MYSQL_ROOT_PASSWORD=JiShe!aqG#5kGgh&0
|
||||||
2246
DockerComposeShells/redis/conf/redis.conf
Normal file
2246
DockerComposeShells/redis/conf/redis.conf
Normal file
File diff suppressed because it is too large
Load Diff
197
DockerComposeShells/start-pulsar.sh
Normal file
197
DockerComposeShells/start-pulsar.sh
Normal file
@ -0,0 +1,197 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 检查环境变量配置文件
|
||||||
|
if [ ! -f "./.env" ]; then
|
||||||
|
echo "❌ 配置文件 .env 不存在,请先创建配置文件"
|
||||||
|
echo "💡 可以复制 .env.example 为 .env 并修改配置"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "📁 使用 .env 配置文件,Docker Compose 将自动加载环境变量"
|
||||||
|
|
||||||
|
echo "=== Docker 镜像仓库登录 ==="
|
||||||
|
|
||||||
|
docker login --username=yunjichaobiao --password hub.jishe.com registry.cn-qingdao.aliyuncs.com
|
||||||
|
|
||||||
|
echo "=== 采集端一键启动脚本 ==="
|
||||||
|
|
||||||
|
# 检查htpasswd是否安装
|
||||||
|
if ! command -v htpasswd &> /dev/null; then
|
||||||
|
echo "❌ htpasswd 未安装,正在安装..."
|
||||||
|
if command -v apt &> /dev/null; then
|
||||||
|
sudo apt update && sudo apt install -y apache2-utils
|
||||||
|
elif command -v yum &> /dev/null; then
|
||||||
|
sudo yum install -y httpd-tools
|
||||||
|
else
|
||||||
|
echo "❌ 无法自动安装htpasswd,请手动安装后重试"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建认证配置
|
||||||
|
echo "🔐 创建Pulsar基本认证配置..."
|
||||||
|
mkdir -p ./pulsar/auth
|
||||||
|
htpasswd -cmb ./pulsar/auth/.htpasswd \${PULSAR_ADMIN_USER} \${PULSAR_ADMIN_PASSWORD}
|
||||||
|
|
||||||
|
echo "✅ 认证配置完成 - 用户名: \${PULSAR_ADMIN_USER}, 密码: \${PULSAR_ADMIN_PASSWORD}"
|
||||||
|
|
||||||
|
# 创建数据目录
|
||||||
|
echo "📁 创建数据目录..."
|
||||||
|
sudo mkdir -p /mnt/dockerdata/appservice/{pulsar,redis,mysql,iotdb,adminapi}
|
||||||
|
sudo mkdir -p /mnt/dockerdata/appservice/pulsar/{zookeeper-data,bookkeeper-data,pulsar-data}
|
||||||
|
sudo mkdir -p /mnt/dockerdata/appservice/{redis/{outdata,conf},mysql/{conf,log,data},iotdb/{conf,data,logs},adminapi/{conf,logs}}
|
||||||
|
sudo chown -R 10000:0 /mnt/dockerdata/appservice/pulsar/
|
||||||
|
|
||||||
|
# 创建本地目录的软链接(如果不存在)
|
||||||
|
echo "🔗 创建本地目录链接..."
|
||||||
|
mkdir -p ./pulsar/{zookeeper-data,bookkeeper-data,pulsar-data,auth}
|
||||||
|
mkdir -p ./redis/{outdata,conf}
|
||||||
|
mkdir -p ./mysql/{conf,log,data}
|
||||||
|
mkdir -p ./iotdb/{conf,data,logs}
|
||||||
|
mkdir -p ./adminapi/{conf,logs}
|
||||||
|
|
||||||
|
# 修复MySQL目录权限
|
||||||
|
echo "🔧 修复MySQL目录权限..."
|
||||||
|
sudo chown -R 1000:1000 ./mysql/data
|
||||||
|
sudo chown -R 1000:1000 ./mysql/log
|
||||||
|
sudo chmod -R 755 ./mysql/data
|
||||||
|
sudo chmod -R 755 ./mysql/log
|
||||||
|
|
||||||
|
sudo chmod -R 755 ./adminapi/logs
|
||||||
|
|
||||||
|
# 第一步:启动IoTDB独立服务获取配置
|
||||||
|
echo "🚀 第一步:启动IoTDB独立服务获取配置..."
|
||||||
|
docker compose -f docker-compose-iotdb-standalone.yml up -d
|
||||||
|
|
||||||
|
# 等待IoTDB启动完成
|
||||||
|
echo "⏳ 等待IoTDB服务启动完成..."
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
# 第二步:拷贝配置目录
|
||||||
|
echo "📁 第二步:拷贝IoTDB配置目录..."
|
||||||
|
docker cp iotdb-standalone:/iotdb/conf ./iotdb
|
||||||
|
echo "✅ IoTDB配置目录拷贝完成"
|
||||||
|
|
||||||
|
# 第三步:修改时间戳精度配置
|
||||||
|
echo "⚙️ 第三步:修改IoTDB时间戳精度配置..."
|
||||||
|
if [ -f "./iotdb/conf/iotdb-system.properties" ]; then
|
||||||
|
# 检查是否已经包含配置
|
||||||
|
if ! grep -q "timestamp_precision=ns" ./iotdb/conf/iotdb-system.properties; then
|
||||||
|
# 添加换行和说明
|
||||||
|
echo "" >> ./iotdb/conf/iotdb-system.properties
|
||||||
|
echo "# ms 毫秒 us 微秒 ns 纳秒" >> ./iotdb/conf/iotdb-system.properties
|
||||||
|
echo "timestamp_precision=ns" >> ./iotdb/conf/iotdb-system.properties
|
||||||
|
echo "✅ 时间戳精度配置已添加:timestamp_precision=ns"
|
||||||
|
else
|
||||||
|
echo "ℹ️ 时间戳精度配置已存在"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "❌ 配置文件不存在,请检查配置目录"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 第四步:停止IoTDB独立服务
|
||||||
|
echo "🛑 第四步:停止IoTDB独立服务..."
|
||||||
|
docker compose -f docker-compose-iotdb-standalone.yml down
|
||||||
|
|
||||||
|
# 第五步:清理IoTDB数据目录,保留配置目录
|
||||||
|
echo "🧹 第五步:清理IoTDB数据目录,保留配置目录..."
|
||||||
|
sudo rm -rf ./iotdb/data/*
|
||||||
|
sudo rm -rf ./iotdb/logs/*
|
||||||
|
echo "✅ IoTDB数据目录已清理,配置目录已保留"
|
||||||
|
|
||||||
|
# MySQL配置检查
|
||||||
|
#echo "⚙️ 检查MySQL配置..."
|
||||||
|
#if [ ! -d "./mysql/init" ]; then
|
||||||
|
# echo "❌ MySQL初始化脚本目录不存在,请检查"
|
||||||
|
# exit 1
|
||||||
|
#fi
|
||||||
|
#
|
||||||
|
#if [ ! -f "./mysql/init/init-db.sql" ]; then
|
||||||
|
# echo "❌ MySQL初始化脚本不存在,请检查"
|
||||||
|
# exit 1
|
||||||
|
#fi
|
||||||
|
#
|
||||||
|
#echo "✅ MySQL配置检查通过"
|
||||||
|
|
||||||
|
sleep 15
|
||||||
|
|
||||||
|
# 启动主服务
|
||||||
|
echo "第六步:🚀 启动 部署主脚本 ..."
|
||||||
|
|
||||||
|
# 检查是否是Pulsar重启
|
||||||
|
if [ -d "./pulsar/zookeeper-data" ] && [ "$(ls -A ./pulsar/zookeeper-data)" ]; then
|
||||||
|
echo "⚠️ 检测到Pulsar数据目录已存在,可能是重启操作"
|
||||||
|
echo "🧹 清理Pulsar状态数据以确保正常启动..."
|
||||||
|
|
||||||
|
# 停止可能运行的服务
|
||||||
|
docker compose down
|
||||||
|
|
||||||
|
# 清理Pulsar状态数据(保留数据目录)
|
||||||
|
echo "清理Zookeeper状态..."
|
||||||
|
sudo rm -rf ./pulsar/zookeeper-data/*
|
||||||
|
echo "清理BookKeeper状态..."
|
||||||
|
sudo rm -rf ./pulsar/bookkeeper-data/*
|
||||||
|
echo "清理Pulsar broker状态..."
|
||||||
|
sudo rm -rf ./pulsar/pulsar-data/*
|
||||||
|
|
||||||
|
echo "✅ Pulsar状态数据已清理"
|
||||||
|
sleep 5
|
||||||
|
fi
|
||||||
|
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
# 等待IoTDB启动完成
|
||||||
|
echo "⏳ 等待IoTDB服务启动完成..."
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
# 设置IoTDB密码
|
||||||
|
echo "第七步:🔐 设置IoTDB root用户密码..."
|
||||||
|
docker exec -i iotdb-standalone /bin/bash << 'EOF'
|
||||||
|
# 等待IoTDB完全启动
|
||||||
|
echo "等待IoTDB服务就绪..."
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
echo "IoTDB服务已就绪,开始设置密码和创建数据库..."
|
||||||
|
|
||||||
|
# 使用非交互式方式创建表模型数据库
|
||||||
|
echo "CREATE DATABASE jisheiotdata;" | ./start-cli.sh -h iotdb-standalone -sql_dialect table
|
||||||
|
|
||||||
|
# 使用非交互式方式设置密码
|
||||||
|
echo "ALTER USER root SET PASSWORD '\${IOTDB_ROOT_PASSWORD}';" | ./start-cli.sh -h iotdb-standalone
|
||||||
|
|
||||||
|
# 等待一下再执行确认密码
|
||||||
|
sleep 2
|
||||||
|
echo "\${IOTDB_ROOT_PASSWORD}" | ./start-cli.sh -h iotdb-standalone
|
||||||
|
|
||||||
|
echo "IoTDB密码设置完成"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "✅ IoTDB密码设置完成 - 用户名: root, 密码: \${IOTDB_ROOT_PASSWORD}"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🎉 Pulsar 基本认证集群启动完成!"
|
||||||
|
echo ""
|
||||||
|
echo "📋 连接信息:"
|
||||||
|
echo " Pulsar Broker: \${SERVER_IP}:\${PULSAR_BROKER_PORT}"
|
||||||
|
echo " Pulsar Admin: http://\${SERVER_IP}:\${PULSAR_ADMIN_PORT}"
|
||||||
|
echo " IoTDB: \${SERVER_IP}:\${IOTDB_PORT} (root/\${IOTDB_ROOT_PASSWORD})"
|
||||||
|
echo " Redis: \${SERVER_IP}:6379"
|
||||||
|
echo " MySQL: \${SERVER_IP}:\${MYSQL_PORT}"
|
||||||
|
echo " Admin API: http://\${SERVER_IP}:\${ADMIN_API_PORT}"
|
||||||
|
echo " Admin UI: http://\${SERVER_IP}:\${ADMIN_WEB_PORT}"
|
||||||
|
echo " 用户名: \${PULSAR_ADMIN_USER}"
|
||||||
|
echo " 密码: \${PULSAR_ADMIN_PASSWORD}"
|
||||||
|
echo ""
|
||||||
|
echo "🔧 常用命令:"
|
||||||
|
echo " 查看状态: docker compose ps"
|
||||||
|
echo " 查看日志: docker compose logs -f"
|
||||||
|
echo " 停止服务: docker compose down"
|
||||||
|
echo ""
|
||||||
|
echo "🧪 测试连接:"
|
||||||
|
echo " Pulsar: curl -u \${PULSAR_ADMIN_USER}:\${PULSAR_ADMIN_PASSWORD} http://\${SERVER_IP}:\${PULSAR_ADMIN_PORT}/admin/v2/clusters"
|
||||||
|
echo " Redis: redis-cli -h \${SERVER_IP} -p 6379 ping"
|
||||||
|
echo " MySQL: mysql -h \${SERVER_IP} -P \${MYSQL_PORT} -u root -p\${MYSQL_ROOT_PASSWORD} -e 'SELECT 1'"
|
||||||
|
echo " IoTDB: docker exec -it iotdb-standalone ./start-cli.sh -h iotdb-standalone -u root -p Lixiao@1980"
|
||||||
|
echo ""
|
||||||
|
echo "🎯 等待服务启动完成..."
|
||||||
|
echo "⏳ 请等待几分钟让所有服务完全启动"
|
||||||
@ -270,6 +270,17 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.ModelBinde
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.DistributedMessageCenter", "JiShe.ServicePro\frameworks\src\JiShe.ServicePro.DistributedMessageCenter\JiShe.ServicePro.DistributedMessageCenter.csproj", "{C51F35A8-5BF8-8E2F-96B2-B62E3BCF8273}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JiShe.ServicePro.DistributedMessageCenter", "JiShe.ServicePro\frameworks\src\JiShe.ServicePro.DistributedMessageCenter\JiShe.ServicePro.DistributedMessageCenter.csproj", "{C51F35A8-5BF8-8E2F-96B2-B62E3BCF8273}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "DockerComposeShells", "DockerComposeShells", "{8FE7CFC6-BA2A-4717-941C-0C227EB151B9}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
DockerComposeShells\.env = DockerComposeShells\.env
|
||||||
|
DockerComposeShells\adminapi\conf\appsettings.Development.json = DockerComposeShells\adminapi\conf\appsettings.Development.json
|
||||||
|
DockerComposeShells\adminapi\conf\appsettings.json = DockerComposeShells\adminapi\conf\appsettings.json
|
||||||
|
DockerComposeShells\docker-compose-iotdb-standalone.yml = DockerComposeShells\docker-compose-iotdb-standalone.yml
|
||||||
|
DockerComposeShells\docker-compose.yml = DockerComposeShells\docker-compose.yml
|
||||||
|
DockerComposeShells\redis\conf\redis.conf = DockerComposeShells\redis\conf\redis.conf
|
||||||
|
DockerComposeShells\start-pulsar.sh = DockerComposeShells\start-pulsar.sh
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@ -860,6 +871,7 @@ Global
|
|||||||
{12DCB751-4433-B3F1-67D3-0F15E3E2BC8B} = {72493AF2-CDAA-40A7-98AB-B8AA2B05965E}
|
{12DCB751-4433-B3F1-67D3-0F15E3E2BC8B} = {72493AF2-CDAA-40A7-98AB-B8AA2B05965E}
|
||||||
{6A26D2DE-215B-CB11-F882-3984B2EE7AA6} = {72493AF2-CDAA-40A7-98AB-B8AA2B05965E}
|
{6A26D2DE-215B-CB11-F882-3984B2EE7AA6} = {72493AF2-CDAA-40A7-98AB-B8AA2B05965E}
|
||||||
{C51F35A8-5BF8-8E2F-96B2-B62E3BCF8273} = {72493AF2-CDAA-40A7-98AB-B8AA2B05965E}
|
{C51F35A8-5BF8-8E2F-96B2-B62E3BCF8273} = {72493AF2-CDAA-40A7-98AB-B8AA2B05965E}
|
||||||
|
{8FE7CFC6-BA2A-4717-941C-0C227EB151B9} = {2C4A6DB8-8D9E-42E6-B7C3-1EDB7B3DE22E}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F}
|
SolutionGuid = {28315BFD-90E7-4E14-A2EA-F3D23AF4126F}
|
||||||
|
|||||||
@ -27,7 +27,6 @@ namespace JiShe.IoT
|
|||||||
typeof(FileManagementApplicationModule),
|
typeof(FileManagementApplicationModule),
|
||||||
typeof(IoTDBManagementApplicationModule),
|
typeof(IoTDBManagementApplicationModule),
|
||||||
typeof(ServiceProFreeRedisProviderModule),
|
typeof(ServiceProFreeRedisProviderModule),
|
||||||
typeof(ServiceProFreeSqlProviderModule),
|
|
||||||
typeof(CTWingManagementApplicationModule),
|
typeof(CTWingManagementApplicationModule),
|
||||||
typeof(OneNETManagementApplicationModule),
|
typeof(OneNETManagementApplicationModule),
|
||||||
typeof(DeviceManagementApplicationModule)
|
typeof(DeviceManagementApplicationModule)
|
||||||
|
|||||||
@ -1,21 +1,21 @@
|
|||||||
{
|
{
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"Default": "Data Source=47.110.53.196;Port=13306;Database=JiSheIoTProDB;uid=root;pwd=JiShe!aqG#5kGgh&0;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true;"
|
"Default": "Data Source=192.168.111.42;Port=13306;Database=JiSheIoTProDB;uid=root;pwd=JiShe!aqG#5kGgh&0;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true;"
|
||||||
},
|
},
|
||||||
"IoTDBOptions": {
|
"IoTDBOptions": {
|
||||||
"UserName": "root",
|
"UserName": "root",
|
||||||
"Password": "Lixiao@1980",
|
"Password": "Lixiao@1980",
|
||||||
//"TreeModelClusterList": [ "47.110.53.196:6667", "47.110.60.222:6667", "47.110.62.104:6667" ],
|
//"TreeModelClusterList": [ "192.168.111.42:6667", "47.110.60.222:6667", "47.110.62.104:6667" ],
|
||||||
//"TableModelClusterList": [ "47.110.53.196:6667", "47.110.60.222:6667", "47.110.62.104:6667" ],
|
//"TableModelClusterList": [ "192.168.111.42:6667", "47.110.60.222:6667", "47.110.62.104:6667" ],
|
||||||
"TreeModelClusterList": [ "47.110.53.196:30710" ],
|
"TreeModelClusterList": [ "192.168.111.42:30710" ],
|
||||||
"TableModelClusterList": [ "47.110.53.196:30710" ],
|
"TableModelClusterList": [ "192.168.111.42:30710" ],
|
||||||
"PoolSize": 32,
|
"PoolSize": 32,
|
||||||
"DataBaseName": "jisheiotdata",
|
"DataBaseName": "jisheiotdata",
|
||||||
"OpenDebugMode": true,
|
"OpenDebugMode": true,
|
||||||
"UseTableSessionPoolByDefault": false
|
"UseTableSessionPoolByDefault": false
|
||||||
},
|
},
|
||||||
"FreeRedisOptions": {
|
"FreeRedisOptions": {
|
||||||
"ConnectionString": "47.110.53.196:30712,password=1q3J@BGf!yhTaD46nS#,abortConnect=false,connectTimeout=30000,allowAdmin=true,maxPoolSize=500,defaultdatabase=14",
|
"ConnectionString": "192.168.111.42:30712,password=1q3J@BGf!yhTaD46nS#,abortConnect=false,connectTimeout=30000,allowAdmin=true,maxPoolSize=500,defaultdatabase=14",
|
||||||
"UseDistributedCache": true
|
"UseDistributedCache": true
|
||||||
},
|
},
|
||||||
"ServerApplicationOptions": {
|
"ServerApplicationOptions": {
|
||||||
|
|||||||
@ -2,7 +2,6 @@ using JiShe.ServicePro.CTWingManagement;
|
|||||||
using JiShe.ServicePro.DeviceManagement;
|
using JiShe.ServicePro.DeviceManagement;
|
||||||
using JiShe.ServicePro.DynamicMenuManagement;
|
using JiShe.ServicePro.DynamicMenuManagement;
|
||||||
using JiShe.ServicePro.FileManagement;
|
using JiShe.ServicePro.FileManagement;
|
||||||
using JiShe.ServicePro.FreeSqlProvider;
|
|
||||||
using JiShe.ServicePro.IoTDBManagement;
|
using JiShe.ServicePro.IoTDBManagement;
|
||||||
using JiShe.ServicePro.OneNETManagement;
|
using JiShe.ServicePro.OneNETManagement;
|
||||||
using JiShe.ServicePro.TemplateManagement;
|
using JiShe.ServicePro.TemplateManagement;
|
||||||
@ -18,7 +17,6 @@ namespace JiShe.IoT
|
|||||||
typeof(DynamicMenuManagementDomainSharedModule),
|
typeof(DynamicMenuManagementDomainSharedModule),
|
||||||
typeof(FileManagementDomainSharedModule),
|
typeof(FileManagementDomainSharedModule),
|
||||||
typeof(IoTDBManagementDomainSharedModule),
|
typeof(IoTDBManagementDomainSharedModule),
|
||||||
typeof(ServiceProFreeSqlProviderModule),
|
|
||||||
typeof(CTWingManagementDomainSharedModule),
|
typeof(CTWingManagementDomainSharedModule),
|
||||||
typeof(OneNETManagementDomainSharedModule),
|
typeof(OneNETManagementDomainSharedModule),
|
||||||
typeof(ServiceProCoreModule),
|
typeof(ServiceProCoreModule),
|
||||||
|
|||||||
@ -23,7 +23,6 @@
|
|||||||
<ProjectReference Include="..\..\JiShe.ServicePro\modules\TemplateManagement\src\JiShe.ServicePro.TemplateManagement.Domain.Shared\JiShe.ServicePro.TemplateManagement.Domain.Shared.csproj" />
|
<ProjectReference Include="..\..\JiShe.ServicePro\modules\TemplateManagement\src\JiShe.ServicePro.TemplateManagement.Domain.Shared\JiShe.ServicePro.TemplateManagement.Domain.Shared.csproj" />
|
||||||
<ProjectReference Include="..\..\JiShe.ServicePro\modules\OneNETManagement\src\JiShe.ServicePro.OneNETManagement.Domain.Shared\JiShe.ServicePro.OneNETManagement.Domain.Shared.csproj" />
|
<ProjectReference Include="..\..\JiShe.ServicePro\modules\OneNETManagement\src\JiShe.ServicePro.OneNETManagement.Domain.Shared\JiShe.ServicePro.OneNETManagement.Domain.Shared.csproj" />
|
||||||
<ProjectReference Include="..\..\JiShe.ServicePro\frameworks\src\JiShe.ServicePro.Core\JiShe.ServicePro.Core.csproj" />
|
<ProjectReference Include="..\..\JiShe.ServicePro\frameworks\src\JiShe.ServicePro.Core\JiShe.ServicePro.Core.csproj" />
|
||||||
<ProjectReference Include="..\..\JiShe.ServicePro\frameworks\src\JiShe.ServicePro.FreeSqlProvider\JiShe.ServicePro.FreeSqlProvider.csproj" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
||||||
@ -37,7 +36,6 @@
|
|||||||
<PackageReference Include="JiShe.ServicePro.FileManagement.Domain.Shared" />
|
<PackageReference Include="JiShe.ServicePro.FileManagement.Domain.Shared" />
|
||||||
<PackageReference Include="JiShe.ServicePro.IoTDBManagement.Domain.Shared" />
|
<PackageReference Include="JiShe.ServicePro.IoTDBManagement.Domain.Shared" />
|
||||||
<PackageReference Include="JiShe.ServicePro.DeviceManagement.Domain.Shared" />
|
<PackageReference Include="JiShe.ServicePro.DeviceManagement.Domain.Shared" />
|
||||||
<PackageReference Include="JiShe.ServicePro.FreeSqlProvider" />
|
|
||||||
<PackageReference Include="JiShe.ServicePro.Core" />
|
<PackageReference Include="JiShe.ServicePro.Core" />
|
||||||
<PackageReference Include="JiShe.ServicePro.CTWingManagement.Domain.Shared" />
|
<PackageReference Include="JiShe.ServicePro.CTWingManagement.Domain.Shared" />
|
||||||
<PackageReference Include="JiShe.ServicePro.OneNETManagement.Domain.Shared" />
|
<PackageReference Include="JiShe.ServicePro.OneNETManagement.Domain.Shared" />
|
||||||
|
|||||||
@ -2,6 +2,7 @@ using JiShe.ServicePro.CTWingManagement;
|
|||||||
using JiShe.ServicePro.DeviceManagement;
|
using JiShe.ServicePro.DeviceManagement;
|
||||||
using JiShe.ServicePro.DynamicMenuManagement;
|
using JiShe.ServicePro.DynamicMenuManagement;
|
||||||
using JiShe.ServicePro.FileManagement;
|
using JiShe.ServicePro.FileManagement;
|
||||||
|
using JiShe.ServicePro.FreeSqlProvider;
|
||||||
using JiShe.ServicePro.IoTDBManagement;
|
using JiShe.ServicePro.IoTDBManagement;
|
||||||
using JiShe.ServicePro.OneNETManagement;
|
using JiShe.ServicePro.OneNETManagement;
|
||||||
using JiShe.ServicePro.TemplateManagement;
|
using JiShe.ServicePro.TemplateManagement;
|
||||||
@ -20,6 +21,7 @@ namespace JiShe.IoT
|
|||||||
typeof(DynamicMenuManagementDomainModule),
|
typeof(DynamicMenuManagementDomainModule),
|
||||||
typeof(CTWingManagementDomainModule),
|
typeof(CTWingManagementDomainModule),
|
||||||
typeof(OneNETManagementDomainModule),
|
typeof(OneNETManagementDomainModule),
|
||||||
|
typeof(ServiceProFreeSqlProviderModule),
|
||||||
typeof(DeviceManagementDomainModule)
|
typeof(DeviceManagementDomainModule)
|
||||||
)]
|
)]
|
||||||
public class IoTDomainModule : AbpModule
|
public class IoTDomainModule : AbpModule
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user