From 03d1a1a03a6743758ff3ca40224f8cc3ef09dbbd Mon Sep 17 00:00:00 2001 From: leiyun Date: Thu, 11 Jun 2026 16:36:23 +0800 Subject: [PATCH] save --- isolated/README.md | 123 ++++++++++++++++++++++++++++++++++++++++----- isolated/update.MD | 20 ++++---- 2 files changed, 120 insertions(+), 23 deletions(-) diff --git a/isolated/README.md b/isolated/README.md index 6414911..8130ffa 100644 --- a/isolated/README.md +++ b/isolated/README.md @@ -86,8 +86,10 @@ URL: https://... 先将 `deploy-from-url.sh` 放到甲方服务器。之后执行: ```bash +cd /home/admin-x99/emp + DEPLOY_ENV=emp-uat \ -DEPLOY_HOME=/home/admin-x99/emp-uat \ +DEPLOY_HOME=/home/admin-x99/emp/emp-uat \ PACKAGE_SHA256=<打包输出的SHA256> \ bash deploy-from-url.sh "<打包输出的URL>" ``` @@ -95,13 +97,13 @@ bash deploy-from-url.sh "<打包输出的URL>" 脚本会将包下载到: ```text -/home/admin-x99/emp-uat/packages/<时间戳>/ +/home/admin-x99/emp/emp-uat/packages/<时间戳>/ ``` 然后把运行文件复制到: ```text -/home/admin-x99/emp-uat/runtime/ +/home/admin-x99/emp/emp-uat/runtime/ ``` 并执行 `install.sh`。 @@ -109,7 +111,7 @@ bash deploy-from-url.sh "<打包输出的URL>" 如果目标目录下还没有 `.env`,`install.sh` 会先从 `.env.example` 生成 `.env` 并停止。修改密码、`PUBLIC_HOST`、端口和第三方配置后,再执行: ```bash -cd /home/admin-x99/emp-uat/runtime +cd /home/admin-x99/emp/emp-uat/runtime DEPLOY_ENV=emp-uat bash install.sh ``` @@ -121,8 +123,8 @@ DEPLOY_ENV=emp-uat bash install.sh | 环境 | 部署目录 | Compose 项目名 | 前端 | WS | MySQL | 本地 Kafka 可选 | TDengine REST | | --- | --- | --- | --- | --- | --- | --- | --- | -| emp-test | `/home/admin-x99/emp-test` | `emp-test` | 4750 | 4751 | 4752 | 4753 | 4754 | -| emp-uat | `/home/admin-x99/emp-uat` | `emp-uat` | 4755 | 4756 | 4757 | 4758 | 4759 | +| emp-test | `/home/admin-x99/emp/emp-test` | `emp-test` | 4750 | 4751 | 4752 | 4753 | 4754 | +| emp-uat | `/home/admin-x99/emp/emp-uat` | `emp-uat` | 4755 | 4756 | 4757 | 4758 | 4759 | `4760` 预留备用。当前公共 compose 模板不对外暴露 Gateway、PDF、Nacos、Redis、TDengine RPC;如需额外暴露,再使用 `4760` 或向甲方申请新端口。 @@ -141,7 +143,7 @@ Kafka 当前配置: ```bash DEPLOY_ENV=emp-test \ -DEPLOY_HOME=/home/admin-x99/emp-test \ +DEPLOY_HOME=/home/admin-x99/emp/emp-test \ PACKAGE_SHA256=<打包输出的SHA256> \ bash deploy-from-url.sh "" ``` @@ -150,17 +152,112 @@ bash deploy-from-url.sh "" ```bash DEPLOY_ENV=emp-uat \ -DEPLOY_HOME=/home/admin-x99/emp-uat \ +DEPLOY_HOME=/home/admin-x99/emp/emp-uat \ PACKAGE_SHA256=<打包输出的SHA256> \ bash deploy-from-url.sh "" ``` Docker compose 会按项目名隔离容器、网络和数据卷,所以只要 `PROJECT_NAME` 不同,`emp-test` 和 `emp-uat` 的数据卷不会互相覆盖。 +## TDengine 首次初始化 + +首次全量部署后,如果 MySQL 数据由外部迁移,只需要在 TDengine 中创建业务库和车辆数据超级表 `s_vehicle_data`。`emp-test` 和 `emp-uat` 是两套独立容器和数据卷,必须分别执行一次。 + +下面以 `emp-uat` 为例,`CREATE STABLE` 使用 here-doc 方式执行,这是现场验证成功的方式,避免超长单行 SQL 粘贴被截断: + +```bash +DEPLOY_ENV=emp-uat +cd /home/admin-x99/emp/$DEPLOY_ENV/runtime + +dc() { docker compose --env-file .env -f docker-compose.yml -p "$DEPLOY_ENV" "$@"; } + +dc exec -T tdengine taos -s "CREATE DATABASE IF NOT EXISTS emp;" + +dc exec -T tdengine taos -d emp <<'SQL' +CREATE STABLE s_vehicle_data ( + ts TIMESTAMP, + endurance_mile FLOAT, + vehicle_status INT, + charge_status INT, + operation_mode INT, + speed INT, + total_mile INT, + vol INT, + cur INT, + soc INT, + dc_status INT, + gear INT, + insulation INT, + pedal_mile INT, + break_status INT, + valid BOOL, + longitude INT, + latitude INT, + charge_energy_num INT, + charge_energy_no INT, + charge_vol INT, + charge_cur INT, + bat_num INT, + bat_start INT, + cur_num INT, + bats NCHAR(4096), + charge_energy_temp_num INT, + charge_energy_temp_no INT, + temp_num INT, + temps NCHAR(2048), + version INT, + avg_cur_num INT, + avg_cur INT, + model_code NCHAR(64), + byte_num INT, + soh INT, + ah_num FLOAT, + energy_num FLOAT, + sn NCHAR(64), + can_protocol_detail NCHAR(256), + adc_status INT, + can_vol FLOAT, + adc_vol FLOAT, + adc_vol_sample INT, + battery_code NCHAR(64), + data_time_text NCHAR(32) +) TAGS ( + vin_no NCHAR(32) +); + +SHOW STABLES; +DESCRIBE s_vehicle_data; +SQL +``` + +成功标志: + +```text +Create OK +SHOW STABLES 输出包含 s_vehicle_data +DESCRIBE s_vehicle_data 输出 47 行字段 +``` + +`taos` 在 `docker compose exec -T` 的非交互终端里可能输出 `Fail to reset the terminal properties` 或 `Fail to set terminal properties`,只要 `Create OK`、`SHOW STABLES` 和 `DESCRIBE` 正常,可以忽略。 + +建完超级表后重启数据服务: + +```bash +dc restart emp-data +``` + +初始化 `emp-test` 时只需要把环境改成: + +```bash +DEPLOY_ENV=emp-test +cd /home/admin-x99/emp/$DEPLOY_ENV/runtime +dc() { docker compose --env-file .env -f docker-compose.yml -p "$DEPLOY_ENV" "$@"; } +``` + ## 甲方服务器常用命令 ```bash -cd /home/admin-x99/emp-uat/runtime +cd /home/admin-x99/emp/emp-uat/runtime docker compose --env-file .env -f docker-compose.yml -p emp-uat ps docker compose --env-file .env -f docker-compose.yml -p emp-uat logs -f emp-gateway @@ -170,7 +267,7 @@ docker compose --env-file .env -f docker-compose.yml -p emp-uat down 查看 test 时把目录和项目名改为 `emp-test`: ```bash -cd /home/admin-x99/emp-test/runtime +cd /home/admin-x99/emp/emp-test/runtime docker compose --env-file .env -f docker-compose.yml -p emp-test ps ``` @@ -179,8 +276,8 @@ docker compose --env-file .env -f docker-compose.yml -p emp-test ps 如果 COS 不可用,仍然可以通过其他方式把 `dist/` 下的包传到甲方服务器。全量包手工部署示例: ```bash -mkdir -p /home/admin-x99/emp-uat/runtime -tar -xzf emp-uat-runtime-*.tar.gz -C /home/admin-x99/emp-uat/runtime --strip-components=1 -cd /home/admin-x99/emp-uat/runtime +mkdir -p /home/admin-x99/emp/emp-uat/runtime +tar -xzf emp-uat-runtime-*.tar.gz -C /home/admin-x99/emp/emp-uat/runtime --strip-components=1 +cd /home/admin-x99/emp/emp-uat/runtime DEPLOY_ENV=emp-uat bash install.sh ``` diff --git a/isolated/update.MD b/isolated/update.MD index 8427674..6c03deb 100644 --- a/isolated/update.MD +++ b/isolated/update.MD @@ -73,15 +73,15 @@ EMP_ROOT=/home/git \ 先确认目标环境已完成全量部署,并存在: ```text -/home/admin-x99/emp-uat/runtime/.env -/home/admin-x99/emp-uat/runtime/docker-compose.yml +/home/admin-x99/emp/emp-uat/runtime/.env +/home/admin-x99/emp/emp-uat/runtime/docker-compose.yml ``` 执行: ```bash DEPLOY_ENV=emp-uat \ -DEPLOY_HOME=/home/admin-x99/emp-uat \ +DEPLOY_HOME=/home/admin-x99/emp/emp-uat \ PACKAGE_SHA256=<打包输出的SHA256> \ bash deploy-from-url.sh "<打包输出的URL>" ``` @@ -91,13 +91,13 @@ bash deploy-from-url.sh "<打包输出的URL>" ```bash # 更新 test DEPLOY_ENV=emp-test \ -DEPLOY_HOME=/home/admin-x99/emp-test \ +DEPLOY_HOME=/home/admin-x99/emp/emp-test \ PACKAGE_SHA256=<打包输出的SHA256> \ bash deploy-from-url.sh "" # 更新 uat DEPLOY_ENV=emp-uat \ -DEPLOY_HOME=/home/admin-x99/emp-uat \ +DEPLOY_HOME=/home/admin-x99/emp/emp-uat \ PACKAGE_SHA256=<打包输出的SHA256> \ bash deploy-from-url.sh "" ``` @@ -118,9 +118,9 @@ $DEPLOY_HOME/packages/<时间戳>/ cd /tmp/emp-update DEPLOY_ENV=emp-uat \ -DEPLOY_HOME=/home/admin-x99/emp-uat \ -ENV_FILE=/home/admin-x99/emp-uat/runtime/.env \ -COMPOSE_FILE=/home/admin-x99/emp-uat/runtime/docker-compose.yml \ +DEPLOY_HOME=/home/admin-x99/emp/emp-uat \ +ENV_FILE=/home/admin-x99/emp/emp-uat/runtime/.env \ +COMPOSE_FILE=/home/admin-x99/emp/emp-uat/runtime/docker-compose.yml \ bash apply-update.sh emp-admin emp-monitor ``` @@ -131,7 +131,7 @@ bash apply-update.sh emp-admin emp-monitor 查看 UAT 服务状态: ```bash -cd /home/admin-x99/emp-uat/runtime +cd /home/admin-x99/emp/emp-uat/runtime docker compose --env-file .env -f docker-compose.yml -p emp-uat ps emp-admin emp-monitor ``` @@ -144,7 +144,7 @@ docker compose --env-file .env -f docker-compose.yml -p emp-uat logs --tail=100 查看 test 时把目录和项目名改为 `emp-test`: ```bash -cd /home/admin-x99/emp-test/runtime +cd /home/admin-x99/emp/emp-test/runtime docker compose --env-file .env -f docker-compose.yml -p emp-test ps emp-admin emp-monitor ```