优化服务订阅消息模式部署脚本
This commit is contained in:
parent
09ee8fec25
commit
90afff855f
@ -108,10 +108,6 @@ services:
|
|||||||
condition: service_started
|
condition: service_started
|
||||||
iotdb-standalone-service:
|
iotdb-standalone-service:
|
||||||
condition: service_started
|
condition: service_started
|
||||||
zookeeper:
|
|
||||||
condition: service_healthy
|
|
||||||
broker:
|
|
||||||
condition: service_healthy
|
|
||||||
networks:
|
networks:
|
||||||
- pulsar-net
|
- pulsar-net
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1 @@
|
|||||||
CREATE TABLE IF NOT EXISTS CTWingAepReceiveMessageEntity(time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, SubDevice STRING TAG, PlatformTenantId STRING FIELD, ProductId STRING FIELD, ServiceId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, MessageType STRING FIELD, Protocol STRING FIELD, RawMessage STRING FIELD, ReceivedPayload STRING FIELD, ReceivedTimestamps INT64 FIELD, IMSI STRING FIELD, IMEI STRING FIELD ) COMMENT 'CTWingAepReceiveMessageEntity' ;
|
CREATE TABLE IF NOT EXISTS CTWingAepReceiveMessageEntity(time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, SubDevice STRING TAG, PlatformTenantId STRING FIELD, ProductId STRING FIELD, ServiceId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, MessageType STRING FIELD, Protocol STRING FIELD, RawMessage STRING FIELD, ReceivedPayload STRING FIELD, ReceivedTimestamps INT64 FIELD, IMSI STRING FIELD, IMEI STRING FIELD ) COMMENT 'CTWingAepReceiveMessageEntity';CREATE TABLE IF NOT EXISTS DeviceTelemetryPacketTaskInfo(time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, SubDevice STRING TAG, IoTPlatformProductId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, IoTPlatformProductName STRING FIELD, IoTPlatformAccountId STRING FIELD, AccountPhoneNumber STRING FIELD, TelemetryType INT32 FIELD, IssueRawMessage STRING FIELD, IssuePayload STRING FIELD, ResponseRawMessage STRING FIELD, ResponsePayload STRING FIELD, TelemetrySource INT32 FIELD, IoTPlatform INT32 FIELD, RetryCount INT32 FIELD, LastIssueTime TIMESTAMP FIELD, IssueStatus INT32 FIELD ) COMMENT 'DeviceTelemetryPacketTaskInfo';CREATE TABLE IF NOT EXISTS OneNETReceiveMessageEntity(time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, SubDevice STRING TAG, ProductId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, MessageType STRING FIELD, Protocol STRING FIELD, RawMessage STRING FIELD, IsEncrypted BOOLEAN FIELD, PlaintextMessage STRING FIELD, ReceivedPayload STRING FIELD, ReceivedTimestamps INT64 FIELD ) COMMENT 'OneNETReceiveMessageEntity';
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS DeviceTelemetryPacketTaskInfo(time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, SubDevice STRING TAG, IoTPlatformProductId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, IoTPlatformProductName STRING FIELD, IoTPlatformAccountId STRING FIELD, AccountPhoneNumber STRING FIELD, TelemetryType INT32 FIELD, IssueRawMessage STRING FIELD, IssuePayload STRING FIELD, ResponseRawMessage STRING FIELD, ResponsePayload STRING FIELD, TelemetrySource INT32 FIELD, IoTPlatform INT32 FIELD, RetryCount INT32 FIELD, LastIssueTime TIMESTAMP FIELD, IssueStatus INT32 FIELD ) COMMENT 'DeviceTelemetryPacketTaskInfo' ;
|
|
||||||
|
|
||||||
CREATE TABLE IF NOT EXISTS OneNETReceiveMessageEntity(time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, SubDevice STRING TAG, ProductId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, MessageType STRING FIELD, Protocol STRING FIELD, RawMessage STRING FIELD, IsEncrypted BOOLEAN FIELD, PlaintextMessage STRING FIELD, ReceivedPayload STRING FIELD, ReceivedTimestamps INT64 FIELD ) COMMENT 'OneNETReceiveMessageEntity
|
|
||||||
@ -138,6 +138,16 @@ fi
|
|||||||
|
|
||||||
echo "✅ MySQL配置检查通过"
|
echo "✅ MySQL配置检查通过"
|
||||||
|
|
||||||
|
# 删除服务订阅模式配置文件(如果存在)
|
||||||
|
echo "🗑️ 清理服务订阅模式配置文件..."
|
||||||
|
SUB_CONFIG_FILE="./adminapi/conf/appsettings.Development_服务订阅模式.json"
|
||||||
|
if [ -f "$SUB_CONFIG_FILE" ]; then
|
||||||
|
rm -f "$SUB_CONFIG_FILE"
|
||||||
|
echo "✅ 已删除服务订阅模式配置文件: $SUB_CONFIG_FILE"
|
||||||
|
else
|
||||||
|
echo "ℹ️ 服务订阅模式配置文件不存在,跳过删除"
|
||||||
|
fi
|
||||||
|
|
||||||
sleep 10
|
sleep 10
|
||||||
|
|
||||||
# 启动主服务
|
# 启动主服务
|
||||||
@ -160,7 +170,7 @@ sleep 10
|
|||||||
echo "IoTDB服务已就绪,开始创建表模型数据库和设置root账号密码..."
|
echo "IoTDB服务已就绪,开始创建表模型数据库和设置root账号密码..."
|
||||||
|
|
||||||
# 使用非交互式方式创建表模型数据库
|
# 使用非交互式方式创建表模型数据库
|
||||||
echo "CREATE DATABASE jisheiotdata;USE jisheiotdata;CREATE TABLE IF NOT EXISTS CTWingAepReceiveMessageEntity( time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, PlatformTenantId STRING FIELD, ProductId STRING FIELD, ServiceId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, MessageType STRING FIELD, Protocol STRING FIELD, RawMessage STRING FIELD, ReceivedPayload STRING FIELD, ReceivedTimestamps INT64 FIELD, IMSI STRING FIELD, IMEI STRING FIELD ) COMMENT 'CTWingAepReceiveMessageEntity';CREATE TABLE IF NOT EXISTS DeviceTelemetryPacketTaskInfo( time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, IoTPlatformProductId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, IoTPlatformProductName STRING FIELD, IoTPlatformAccountId STRING FIELD, AccountPhoneNumber STRING FIELD, MessageType STRING FIELD, IssueRawMessage STRING FIELD, IssuePayload STRING FIELD, ResponseRawMessage STRING FIELD, ResponsePayload STRING FIELD, TelemetrySource INT32 FIELD, IoTPlatform INT32 FIELD ) COMMENT 'DeviceTelemetryPacketTaskInfo';CREATE TABLE IF NOT EXISTS OneNETReceiveMessageEntity( time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, ProductId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, MessageType STRING FIELD, Protocol STRING FIELD, RawMessage STRING FIELD, IsEncrypted BOOLEAN FIELD, PlaintextMessage STRING FIELD, ReceivedPayload STRING FIELD, ReceivedTimestamps INT64 FIELD ) COMMENT 'OneNETReceiveMessageEntity';" | ./start-cli.sh -h iotdb-standalone -sql_dialect table
|
echo "CREATE TABLE IF NOT EXISTS CTWingAepReceiveMessageEntity(time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, SubDevice STRING TAG, PlatformTenantId STRING FIELD, ProductId STRING FIELD, ServiceId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, MessageType STRING FIELD, Protocol STRING FIELD, RawMessage STRING FIELD, ReceivedPayload STRING FIELD, ReceivedTimestamps INT64 FIELD, IMSI STRING FIELD, IMEI STRING FIELD ) COMMENT 'CTWingAepReceiveMessageEntity';CREATE TABLE IF NOT EXISTS DeviceTelemetryPacketTaskInfo(time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, SubDevice STRING TAG, IoTPlatformProductId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, IoTPlatformProductName STRING FIELD, IoTPlatformAccountId STRING FIELD, AccountPhoneNumber STRING FIELD, TelemetryType INT32 FIELD, IssueRawMessage STRING FIELD, IssuePayload STRING FIELD, ResponseRawMessage STRING FIELD, ResponsePayload STRING FIELD, TelemetrySource INT32 FIELD, IoTPlatform INT32 FIELD, RetryCount INT32 FIELD, LastIssueTime TIMESTAMP FIELD, IssueStatus INT32 FIELD ) COMMENT 'DeviceTelemetryPacketTaskInfo';CREATE TABLE IF NOT EXISTS OneNETReceiveMessageEntity(time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, SubDevice STRING TAG, ProductId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, MessageType STRING FIELD, Protocol STRING FIELD, RawMessage STRING FIELD, IsEncrypted BOOLEAN FIELD, PlaintextMessage STRING FIELD, ReceivedPayload STRING FIELD, ReceivedTimestamps INT64 FIELD ) COMMENT 'OneNETReceiveMessageEntity';" | ./start-cli.sh -h iotdb-standalone -sql_dialect table
|
||||||
|
|
||||||
# 使用非交互式方式设置密码
|
# 使用非交互式方式设置密码
|
||||||
echo "ALTER USER root SET PASSWORD '${IOTDB_ROOT_PASSWORD}';" | ./start-cli.sh -h iotdb-standalone
|
echo "ALTER USER root SET PASSWORD '${IOTDB_ROOT_PASSWORD}';" | ./start-cli.sh -h iotdb-standalone
|
||||||
|
|||||||
@ -1,141 +1,200 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# =========================
|
# 检查环境变量配置文件
|
||||||
# 服务订阅模式一键启动脚本
|
|
||||||
# =========================
|
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
ROOT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
||||||
cd "$ROOT_DIR"
|
|
||||||
|
|
||||||
# 1. 校验 .env
|
|
||||||
if [ ! -f "./.env" ]; then
|
if [ ! -f "./.env" ]; then
|
||||||
echo "❌ 配置文件 .env 不存在,请先创建(可复制 .env.example)。"
|
echo "❌ 配置文件 .env 不存在,请先创建配置文件"
|
||||||
|
echo "💡 可以复制 .env.example 为 .env 并修改配置"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "📁 检查 .env 并规范换行符..."
|
echo "📁 使用 .env 配置文件,Docker Compose 将自动加载环境变量"
|
||||||
|
|
||||||
|
# 规范化 .env 的换行符为 LF,避免 CRLF 导致的 $'\r' 报错
|
||||||
if command -v dos2unix >/dev/null 2>&1; then
|
if command -v dos2unix >/dev/null 2>&1; then
|
||||||
dos2unix -q ./.env || true
|
dos2unix -q ./.env || true
|
||||||
else
|
else
|
||||||
sed -i 's/\r$//' ./.env 2>/dev/null || perl -pi -e 's/\r$//' ./.env 2>/dev/null || true
|
sed -i 's/\r$//' ./.env 2>/dev/null || perl -pi -e 's/\r$//' ./.env 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 2. 加载环境变量
|
# 将 .env 中的变量导入当前 Shell,供脚本内使用
|
||||||
set -a
|
set -a
|
||||||
. ./.env
|
. ./.env
|
||||||
set +a
|
set +a
|
||||||
|
|
||||||
# 3. 校验关键变量
|
# 校验关键环境变量是否已加载
|
||||||
required_vars=(
|
|
||||||
IOTDB_PORT
|
|
||||||
IOTDB_ROOT_PASSWORD
|
|
||||||
REDIS_PORT
|
|
||||||
MYSQL_PORT
|
|
||||||
MYSQL_ROOT_PASSWORD
|
|
||||||
ADMIN_API_PORT
|
|
||||||
ADMIN_WEB_PORT
|
|
||||||
)
|
|
||||||
missing_vars=()
|
missing_vars=()
|
||||||
for var in "${required_vars[@]}"; do
|
[ -z "${PULSAR_ADMIN_USER}" ] && missing_vars+=(PULSAR_ADMIN_USER)
|
||||||
if [ -z "${!var:-}" ]; then
|
[ -z "${PULSAR_ADMIN_PASSWORD}" ] && missing_vars+=(PULSAR_ADMIN_PASSWORD)
|
||||||
missing_vars+=("$var")
|
[ -z "${SERVER_IP}" ] && missing_vars+=(SERVER_IP)
|
||||||
fi
|
[ -z "${PULSAR_BROKER_PORT}" ] && missing_vars+=(PULSAR_BROKER_PORT)
|
||||||
done
|
[ -z "${PULSAR_ADMIN_PORT}" ] && missing_vars+=(PULSAR_ADMIN_PORT)
|
||||||
|
|
||||||
if [ ${#missing_vars[@]} -ne 0 ]; then
|
if [ ${#missing_vars[@]} -ne 0 ]; then
|
||||||
echo "❌ 以下环境变量未设置: ${missing_vars[*]}"
|
echo "❌ 以下环境变量未设置: ${missing_vars[*]}"
|
||||||
echo "💡 请在 .env 中补充这些变量后重试。"
|
echo "💡 请在 .env 中补充这些变量后重试"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 4. 登录镜像仓库(如已登录可忽略错误)
|
echo "=== Docker 镜像仓库登录 ==="
|
||||||
echo "=== Docker 镜像仓库登录(若已登录可忽略提示) ==="
|
|
||||||
docker login --username=yunjichaobiao --password hub.jishe.com registry.cn-qingdao.aliyuncs.com || true
|
|
||||||
|
|
||||||
# 5. 创建宿主机数据目录
|
docker login --username=yunjichaobiao --password hub.jishe.com registry.cn-qingdao.aliyuncs.com
|
||||||
|
|
||||||
|
echo "=== 采集端一键启动脚本 ==="
|
||||||
|
|
||||||
|
# 创建数据目录
|
||||||
echo "📁 创建数据目录..."
|
echo "📁 创建数据目录..."
|
||||||
|
sudo mkdir -p /mnt/dockerdata/appservice/{redis,mysql,iotdb,adminapi}
|
||||||
sudo mkdir -p /mnt/dockerdata/appservice/{redis/{outdata,conf},mysql/{conf,log,data},iotdb/{conf,data,logs},adminapi/{conf,logs}}
|
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/iotdb || true
|
|
||||||
|
|
||||||
|
# 创建本地目录的软链接(如果不存在)
|
||||||
echo "🔗 创建本地目录链接..."
|
echo "🔗 创建本地目录链接..."
|
||||||
mkdir -p ./redis/{outdata,conf}
|
mkdir -p ./redis/{outdata,conf}
|
||||||
mkdir -p ./mysql/{conf,log,data}
|
mkdir -p ./mysql/{conf,log,data}
|
||||||
mkdir -p ./iotdb/{conf,data,logs}
|
mkdir -p ./iotdb/{conf,data,logs}
|
||||||
mkdir -p ./adminapi/{conf,logs}
|
mkdir -p ./adminapi/{conf,logs}
|
||||||
|
|
||||||
# 6. 修复权限
|
# 修复MySQL目录权限
|
||||||
echo "🔧 修复 MySQL / Admin 日志目录权限..."
|
echo "🔧 修复MySQL目录权限..."
|
||||||
sudo chown -R 1000:1000 ./mysql/data ./mysql/log || true
|
sudo chown -R 1000:1000 ./mysql/data
|
||||||
sudo chmod -R 755 ./mysql/data ./mysql/log
|
sudo chown -R 1000:1000 ./mysql/log
|
||||||
sudo chmod -R 755 ./adminapi/logs || true
|
sudo chmod -R 755 ./mysql/data
|
||||||
|
sudo chmod -R 755 ./mysql/log
|
||||||
|
|
||||||
# 7. 启动订阅模式初始化栈
|
sudo chmod -R 755 ./adminapi/logs
|
||||||
echo "🚀 第一步:启动服务订阅初始化栈 (docker-compose-service_sub_init.yml)"
|
|
||||||
docker compose -f docker-compose-service_sub_init.yml up -d
|
|
||||||
|
|
||||||
echo "⏳ 等待 IoTDB 容器启动..."
|
# 第一步:启动IoTDB独立服务获取配置
|
||||||
sleep 15
|
echo "🚀 第一步:启动IoTDB独立服务获取配置..."
|
||||||
|
docker compose -f docker-compose-iotdb-standalone.yml up -d
|
||||||
|
|
||||||
# 8. 拷贝 IoTDB 配置
|
# 等待IoTDB启动完成
|
||||||
echo "📁 拷贝 IoTDB 配置目录..."
|
echo "⏳ 等待IoTDB服务启动完成..."
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
# 第二步:拷贝配置目录
|
||||||
|
echo "📁 第二步:拷贝IoTDB配置目录..."
|
||||||
docker cp iotdb-standalone:/iotdb/conf ./iotdb
|
docker cp iotdb-standalone:/iotdb/conf ./iotdb
|
||||||
|
echo "✅ IoTDB配置目录拷贝完成"
|
||||||
|
|
||||||
# 9. 设置时间戳精度
|
# 第三步:修改时间戳精度配置
|
||||||
CONFIG_FILE=./iotdb/conf/iotdb-system.properties
|
echo "⚙️ 第三步:修改IoTDB时间戳精度配置..."
|
||||||
echo "⚙️ 配置 IoTDB 时间戳精度..."
|
if [ -f "./iotdb/conf/iotdb-system.properties" ]; then
|
||||||
if [ -f "$CONFIG_FILE" ]; then
|
# 检查是否已经包含配置
|
||||||
if ! grep -q "timestamp_precision=ns" "$CONFIG_FILE"; then
|
if ! grep -q "timestamp_precision=ns" ./iotdb/conf/iotdb-system.properties; then
|
||||||
{
|
# 添加换行和说明
|
||||||
echo ""
|
echo "" >> ./iotdb/conf/iotdb-system.properties
|
||||||
echo "# ms 毫秒 / us 微秒 / ns 纳秒"
|
echo "# ms 毫秒 us 微秒 ns 纳秒" >> ./iotdb/conf/iotdb-system.properties
|
||||||
echo "timestamp_precision=ns"
|
echo "timestamp_precision=ns" >> ./iotdb/conf/iotdb-system.properties
|
||||||
} >> "$CONFIG_FILE"
|
echo "✅ 时间戳精度配置已添加:timestamp_precision=ns"
|
||||||
echo "✅ 已追加 timestamp_precision=ns"
|
|
||||||
else
|
else
|
||||||
echo "ℹ️ timestamp_precision=ns 已存在"
|
echo "ℹ️ 时间戳精度配置已存在"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "⚠️ 未找到 $CONFIG_FILE,请确认 IoTDB 配置是否拷贝成功。"
|
echo "❌ 配置文件不存在,请检查配置目录"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 10. 清理 IoTDB 数据文件(保留 conf)
|
# 第四步:停止IoTDB独立服务
|
||||||
echo "🧹 清理 IoTDB 本地数据/日志目录..."
|
echo "🛑 第四步:停止IoTDB独立服务..."
|
||||||
sudo rm -rf ./iotdb/data/* ./iotdb/logs/* || true
|
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配置检查通过"
|
||||||
|
|
||||||
|
# 处理 Admin API 配置文件
|
||||||
|
echo "📝 配置 Admin API 配置文件..."
|
||||||
|
ADMIN_CONF_DIR="./adminapi/conf"
|
||||||
|
OLD_CONFIG="${ADMIN_CONF_DIR}/appsettings.Development.json"
|
||||||
|
NEW_CONFIG="${ADMIN_CONF_DIR}/appsettings.Development_服务订阅模式.json"
|
||||||
|
TARGET_CONFIG="${ADMIN_CONF_DIR}/appsettings.Development.json"
|
||||||
|
|
||||||
|
if [ -f "$OLD_CONFIG" ]; then
|
||||||
|
echo "🗑️ 删除旧的配置文件: $OLD_CONFIG"
|
||||||
|
rm -f "$OLD_CONFIG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$NEW_CONFIG" ]; then
|
||||||
|
echo "📋 重命名配置文件: $NEW_CONFIG -> $TARGET_CONFIG"
|
||||||
|
mv "$NEW_CONFIG" "$TARGET_CONFIG"
|
||||||
|
echo "✅ 配置文件处理完成"
|
||||||
|
else
|
||||||
|
echo "⚠️ 未找到源配置文件: $NEW_CONFIG,请确认文件是否存在"
|
||||||
|
fi
|
||||||
|
|
||||||
# 11. 设置 IoTDB root 密码
|
|
||||||
echo "🔐 设置 IoTDB root 密码..."
|
|
||||||
docker exec -i iotdb-standalone /bin/bash << EOF
|
|
||||||
echo "等待 IoTDB 完全就绪..."
|
|
||||||
sleep 10
|
sleep 10
|
||||||
|
|
||||||
|
# 启动主服务
|
||||||
|
echo "第六步:🚀 启动 部署主脚本 ..."
|
||||||
|
|
||||||
|
docker compose -f docker-compose_service_sub_init.yml up -d
|
||||||
|
|
||||||
|
# 等待IoTDB启动完成
|
||||||
|
echo "⏳ 等待IoTDB服务启动完成..."
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
# 设置IoTDB密码
|
||||||
|
echo "第七步:🔐 设置 IoTDB"
|
||||||
|
echo "ALTER USER root SET PASSWORD '${IOTDB_ROOT_PASSWORD}';"
|
||||||
|
docker exec -i iotdb-standalone /bin/bash << EOF
|
||||||
|
# 等待IoTDB完全启动
|
||||||
|
echo "等待IoTDB服务就绪..."
|
||||||
|
sleep 10
|
||||||
|
|
||||||
|
echo "IoTDB服务已就绪,开始创建表模型数据库和设置root账号密码..."
|
||||||
|
|
||||||
|
# 使用非交互式方式创建表模型数据库
|
||||||
|
echo "CREATE TABLE IF NOT EXISTS CTWingAepReceiveMessageEntity(time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, SubDevice STRING TAG, PlatformTenantId STRING FIELD, ProductId STRING FIELD, ServiceId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, MessageType STRING FIELD, Protocol STRING FIELD, RawMessage STRING FIELD, ReceivedPayload STRING FIELD, ReceivedTimestamps INT64 FIELD, IMSI STRING FIELD, IMEI STRING FIELD ) COMMENT 'CTWingAepReceiveMessageEntity';CREATE TABLE IF NOT EXISTS DeviceTelemetryPacketTaskInfo(time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, SubDevice STRING TAG, IoTPlatformProductId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, IoTPlatformProductName STRING FIELD, IoTPlatformAccountId STRING FIELD, AccountPhoneNumber STRING FIELD, TelemetryType INT32 FIELD, IssueRawMessage STRING FIELD, IssuePayload STRING FIELD, ResponseRawMessage STRING FIELD, ResponsePayload STRING FIELD, TelemetrySource INT32 FIELD, IoTPlatform INT32 FIELD, RetryCount INT32 FIELD, LastIssueTime TIMESTAMP FIELD, IssueStatus INT32 FIELD ) COMMENT 'DeviceTelemetryPacketTaskInfo';CREATE TABLE IF NOT EXISTS OneNETReceiveMessageEntity(time TIMESTAMP TIME, IoTDataType STRING TAG, DeviceType STRING TAG, DeviceAddress STRING TAG, SubDevice STRING TAG, ProductId STRING FIELD, IoTPlatformDeviceOpenInfo STRING FIELD, MessageType STRING FIELD, Protocol STRING FIELD, RawMessage STRING FIELD, IsEncrypted BOOLEAN FIELD, PlaintextMessage STRING FIELD, ReceivedPayload STRING FIELD, ReceivedTimestamps INT64 FIELD ) COMMENT 'OneNETReceiveMessageEntity';" | ./start-cli.sh -h iotdb-standalone -sql_dialect table
|
||||||
|
|
||||||
|
# 使用非交互式方式设置密码
|
||||||
echo "ALTER USER root SET PASSWORD '${IOTDB_ROOT_PASSWORD}';" | ./start-cli.sh -h iotdb-standalone
|
echo "ALTER USER root SET PASSWORD '${IOTDB_ROOT_PASSWORD}';" | ./start-cli.sh -h iotdb-standalone
|
||||||
|
|
||||||
|
echo "IoTDB密码设置完成"
|
||||||
EOF
|
EOF
|
||||||
echo "✅ IoTDB 密码设置完成"
|
|
||||||
|
|
||||||
# 12. 关闭初始化栈
|
echo "✅ IoTDB密码设置完成 - 用户名: root, 密码: ${IOTDB_ROOT_PASSWORD}"
|
||||||
echo "🛑 停止初始化栈..."
|
|
||||||
docker compose -f docker-compose-service_sub_init.yml down
|
|
||||||
|
|
||||||
echo "⏳ 等待 30 秒..."
|
|
||||||
sleep 30
|
|
||||||
|
|
||||||
# 13. 启动服务订阅模式正式栈
|
|
||||||
echo "🚀 最终启动:docker-compose_service_sub.yml"
|
|
||||||
docker compose -f docker-compose_service_sub.yml up -d
|
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "🎉 服务订阅模式环境启动完成!"
|
echo "📋 连接信息:"
|
||||||
echo "📋 关键连接信息:"
|
echo " IoTDB: ${SERVER_IP}:${IOTDB_PORT} (root/${IOTDB_ROOT_PASSWORD})"
|
||||||
echo " IoTDB RPC: localhost:${IOTDB_PORT} (root/${IOTDB_ROOT_PASSWORD})"
|
echo " Redis: ${SERVER_IP}:6379"
|
||||||
echo " Redis: localhost:${REDIS_PORT}"
|
echo " MySQL: ${SERVER_IP}:${MYSQL_PORT}"
|
||||||
echo " MySQL: localhost:${MYSQL_PORT}"
|
echo " Admin API: http://${SERVER_IP}:${ADMIN_API_PORT}"
|
||||||
echo " Admin API: http://localhost:${ADMIN_API_PORT}"
|
echo " Admin UI: http://${SERVER_IP}:${ADMIN_WEB_PORT}"
|
||||||
echo " Admin UI : http://localhost:${ADMIN_WEB_PORT}"
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "🔧 常用命令:"
|
echo "🔧 常用命令:"
|
||||||
echo " 查看状态 : docker compose -f docker-compose_service_sub.yml ps"
|
echo " 查看状态: docker compose ps"
|
||||||
echo " 查看日志 : docker compose -f docker-compose_service_sub.yml logs -f"
|
echo " 查看日志: docker compose logs -f"
|
||||||
echo " 停止服务 : docker compose -f docker-compose_service_sub.yml down"
|
echo " 停止服务: docker compose down"
|
||||||
echo ""
|
echo ""
|
||||||
|
echo "🧪 测试连接:"
|
||||||
|
echo " Redis: redis-cli -h ${SERVER_IP} -p 6379 ping"
|
||||||
|
echo " MySQL: mysql -h ${SERVER_IP} -P ${MYSQL_PORT} -uroot -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 "⏳ 请等待3分钟让所有服务完全初始化成功"
|
||||||
|
sleep 180
|
||||||
|
echo "🎯 服务初始化完成..."
|
||||||
|
echo "⏳ 然后等待1分钟让所有服务完全停止 docker compose -f docker-compose_service_sub_init.yml down"
|
||||||
|
|
||||||
|
docker compose -f docker-compose_service_sub_init.yml down
|
||||||
|
|
||||||
|
sleep 60
|
||||||
|
echo "🎯 初始化服务已经完成停止......"
|
||||||
|
echo "⏳ 最后再通过 启动最终生产环境,移除初始化依赖,等待服务最终启动完成。"
|
||||||
|
|
||||||
|
docker compose -f docker-compose_service_sub.yml up -d
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user