| @@ -0,0 +1,102 @@ | |||
| # UAT 环境运维速查 | |||
| > 部署目录:`/home/admin-x99/emp/emp-uat/runtime` | |||
| > Compose 项目名:`emp-uat`,网络 `emp-uat_emp-net`,数据卷前缀 `emp-uat_`,与 test 完全隔离。 | |||
| ## 1. 服务端口 | |||
| ### 对外暴露(开放外网) | |||
| | 服务 | 容器服务名 | 宿主机端口 | 容器内端口 | 说明 | | |||
| |------|-----------|-----------|-----------|------| | |||
| | 前端(Nginx) | emp-admin | 4755 | 80 | 管理后台入口,代理 `/api/`、`/socket.io/`,并转发模拟器 | | |||
| | MySQL | mysql | 4757 | 3306 | 业务库 emp | | |||
| | TDengine UI | tdengine | 4759 | 6060 | 时序库管理界面 | | |||
| - 管理后台:`http://ip-cld.cn:4755/` | |||
| - 模拟器:`http://ip-cld.cn:4755/simulator/`(经 admin 内部 Nginx 转发) | |||
| ### 仅 Docker 内网访问(不开放外网) | |||
| | 服务 | 内网地址 | 说明 | | |||
| |------|---------|------| | |||
| | emp-ws | emp-ws:3000 | Socket.IO 推送 + 模拟器,经 admin Nginx 转发,4756 不对外 | | |||
| | emp-gateway | emp-gateway:9000 | API 网关(JWT 鉴权入口) | | |||
| | emp-auth | emp-auth:9001 | 认证授权 | | |||
| | emp-monitor | emp-monitor:9002 | 业务接口 | | |||
| | emp-data | emp-data:9003 | 数据消费/清洗/时序写入 | | |||
| | emp-pdf | emp-pdf:3100 | PDF 导出 | | |||
| | nacos | nacos:8848 | 注册/配置中心 | | |||
| | redis | redis:6379 | 缓存(DB 0) | | |||
| | tdengine REST | tdengine:6041 | 时序库 REST | | |||
| ## 2. 运维速查命令 | |||
| 快捷函数(或使用 `profiles/dc.sh`): | |||
| ```bash | |||
| cd /home/admin-x99/emp/emp-uat/runtime | |||
| dc() { docker compose --env-file .env -f docker-compose.yml -p emp-uat "$@"; } | |||
| ``` | |||
| | 操作 | 命令 | | |||
| |------|------| | |||
| | 查看所有容器状态 | `dc ps` | | |||
| | 跟踪某服务日志 | `dc logs -f emp-monitor` | | |||
| | 查看最近 200 行日志 | `dc logs --tail=200 emp-monitor` | | |||
| | 改 .env 后重建某服务 | `dc up -d emp-monitor` | | |||
| | 重启某服务(不重读 .env) | `dc restart emp-ws` | | |||
| | 启动全部 | `dc up -d` | | |||
| | 停止全部(保留数据卷) | `dc down` | | |||
| | 进 MySQL | `dc exec mysql sh -c 'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" emp'` | | |||
| | 进 Redis | `dc exec redis sh -c 'redis-cli -a "$REDIS_PASSWORD"'` | | |||
| | 进 TDengine | `dc exec tdengine taos` | | |||
| | 查看资源占用 | `docker stats` | | |||
| > 改 `.env` 必须用 `up -d` 重建容器,`restart` 不会重新读取环境变量。 | |||
| 常用排查: | |||
| ```bash | |||
| # 同步相关日志 | |||
| dc logs -f emp-monitor | grep -E "同步" | |||
| # 查看 sync 水位(车辆/设备增量游标) | |||
| dc exec redis sh -c 'redis-cli -a "$REDIS_PASSWORD" KEYS "sync:*"' | |||
| # 排查单点登录顶号(token 版本号) | |||
| dc exec redis sh -c 'redis-cli -a "$REDIS_PASSWORD" GET auth:token-version:<userId>' | |||
| ``` | |||
| ## 3. 关键信息 | |||
| ### 数据库 / 中间件(compose 内网自建) | |||
| - MySQL:库 `emp`,内网 `mysql:3306`,对外 4757 | |||
| - Redis:`redis:6379`,DB 0 | |||
| - TDengine:库 `emp`,超级表 `s_vehicle_data`,`tdengine:6041`,UI 对外 4759 | |||
| - Nacos:`nacos:8848`,开启鉴权(`NACOS_AUTH_ENABLE=true`) | |||
| ### Kafka(外部,甲方提供) | |||
| - Broker:`ip-cld.cn:29362` | |||
| - 后端消费 topic:`YuanJing-uat-vehicle-mock-data`(group `emp-uat-data-group`) | |||
| - 模拟器推送 topic:`uat-vehicle-real-data` | |||
| - 内部 Kafka 镜像默认不启动;本地联调需 `COMPOSE_PROFILES=local-kafka` | |||
| ### 模拟器登录 | |||
| - `SIMULATOR_ADMIN_ROLE=ADMIN`:任意含 ADMIN 角色的账号可登录模拟器 | |||
| - 模拟器与业务后台共用账号体系,**同一账号在两处登录会相互挤下线**;建议模拟器与业务后台使用不同的管理员账号 | |||
| ### 环境隔离 | |||
| - compose project `emp-uat`,网络 `emp-uat_emp-net`,数据卷前缀 `emp-uat_`,与 test 完全隔离 | |||
| - 内网服务名(emp-ws / emp-pdf / emp-gateway 等)在各自 project 网络内解析,test / uat 互不串 | |||
| ## 4. 重要提醒 | |||
| - 现场 `.env` 必须使用真实密码/密钥(MySQL、Redis、JWT、COS、SYNC_TK 等),勿用占位符 | |||
| - emp-monitor 等配置可能由 Nacos 配置中心下发;改 `.env` 不生效时,需到 Nacos 控制台修改对应 dataId | |||
| - 系统重装后 test / uat 均需重新全量部署,并在 TDengine 中重新创建超级表 `s_vehicle_data` | |||
| - 清空车辆/设备表重新验证同步时,需同时清 Redis 水位 `sync:vehicle:lastUpdateTime`、`sync:device:lastUpdateTime`,否则从游标处增量拉取不到旧数据 | |||