f7cab5ad5c
mirror-to-gitee / mirror (push) Successful in 14s
把原来 12 个独立仓合并为单仓多服务结构,各仓完整提交历史通过
read-tree 并入保留(137 个提交,blame 可追溯)。
目录:
admin-svr/ admin-ui/ app/{server,app}/ openapi/ worker-svr/
upstream-chan/ upstream-proxy/ sms/ bot/ docs/ onelink-mock/ deploy/
同时:
- 新增根 README(目录说明、快速开始、源码构建、镜像发布、许可)
- 新增根 Makefile(make build / test / images / docs)
- 新增根 .gitattributes / .gitignore,删掉 12 份重复的 Apache LICENSE
(admin-ui/ 与 app/app/ 的 MIT 上游许可保留)
- 各服务的 .gitea/workflows 收敛到仓根:trigger-jenkins.yml(tag 构建全部
服务)+ mirror-to-gitee.yml(自动建 Gitee 仓后镜像)
- 文档内跨仓绝对链接改为仓内相对路径;部署/构建文档改为单仓路径
130 lines
5.5 KiB
Markdown
130 lines
5.5 KiB
Markdown
# IotLCM 部署仓
|
||
|
||
IotLCM 物联网卡管理平台的部署编排与数据库初始化脚本。使用 Docker Compose 在单机上拉起完整平台。
|
||
|
||
## 一键启动
|
||
|
||
```bash
|
||
git clone <仓库地址> iotlcm
|
||
cd iotlcm/deploy
|
||
docker compose up -d
|
||
```
|
||
|
||
无需复制或修改任何文件,配置里已带可用默认值。首次启动会自动完成 MySQL 建库建表(95 张)、种子数据导入、时序库建表,实测约 30 秒~1 分钟。
|
||
|
||
等待 MySQL 健康后其余服务依次启动,观察进度:
|
||
|
||
```bash
|
||
docker compose logs -f mysql
|
||
```
|
||
|
||
启动完成后访问 `http://<宿主机IP>:8009`:
|
||
|
||
| 项 | 值 |
|
||
| --- | --- |
|
||
| 账号 | `admin` |
|
||
| 口令 | `Iotlcm2026Default` |
|
||
|
||
> ⚠️ **正式使用前必须修改默认口令**,见下方「上线前必改」。
|
||
|
||
## 可选服务
|
||
|
||
```bash
|
||
docker compose --profile with-mock up -d # 运营商接口挡板
|
||
docker compose --profile with-bot up -d # 飞书通知(运维自用)
|
||
docker compose --profile with-nginx up -d # 自带反向代理
|
||
```
|
||
|
||
多个 profile 可组合:`--profile with-mock --profile with-nginx up -d`
|
||
|
||
`with-bot` 是把全量同步等运维事件推送到飞书群的**内部运维工具**,不是平台功能。它需要你自己的飞书自建应用凭证(`config/bot/config.yaml` 的 `appId` / `appSecret` / `chatId`),没填就不启动。
|
||
|
||
**默认不启动,也不影响平台功能**;不需要飞书通知就完全不用管它。
|
||
|
||
## 镜像版本
|
||
|
||
所有镜像(含基础组件)都在**同一个镜像仓库** `<镜像仓库>/iotlcm/iotlcm` 下,靠 tag 区分服务与版本:
|
||
|
||
```text
|
||
crpi-.../iotlcm/iotlcm:mysql-8.0
|
||
crpi-.../iotlcm/iotlcm:redis-7.2
|
||
crpi-.../iotlcm/iotlcm:iotlcm-admin-svr-v1.0.4
|
||
crpi-.../iotlcm/iotlcm:iotlcm-app-server-v1.0.2
|
||
```
|
||
|
||
tag 格式统一为 **`<服务名>-<版本>`**。
|
||
|
||
当前业务版本:大部分服务为 `v1.0.4`,`iotlcm-app-server` / `iotlcm-app-web` 为 `v1.0.2`(源仓最新 tag 就是 v1.0.2)。
|
||
|
||
升级时在 `docker-compose.yml` 中同步更新 tag 的版本部分,不要改用 `latest`。
|
||
|
||
## 部署内容
|
||
|
||
| 类别 | 服务 |
|
||
| --- | --- |
|
||
| 基础组件 | MySQL、Redis、RabbitMQ、Consul、TDengine(流量历史) |
|
||
| 业务服务 | admin-svr(管理端后端)、admin-ui(管理端前端)、openapi(对外 API)、app-server(小程序后端)、app-web(小程序前端)、upstream-chan(运营商对接)、upstream-proxy(通道缓存转发)、worker-svr(异步任务)、sms(短信)、docs(文档站) |
|
||
| 可选 | onelink-mock(运营商接口挡板)、bot(飞书通知)、nginx(反向代理) |
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
iotlcm/deploy/
|
||
├── docker-compose.yml # 服务编排(含全部默认值)
|
||
├── config/ # 各服务配置,已带可用默认值
|
||
│ ├── admin-svr/config.yaml
|
||
│ ├── admin-ui/default.conf
|
||
│ ├── app-server/config.yaml
|
||
│ ├── bot/config.yaml
|
||
│ ├── nginx/iotlcm.conf
|
||
│ ├── openapi/config.yaml
|
||
│ ├── sms/config.yaml
|
||
│ ├── upstream-chan/config.yaml
|
||
│ ├── upstream-proxy/config.yaml
|
||
│ └── worker-svr/config.yaml
|
||
├── schema/init.sql # MySQL 初始化(单文件,首次启动自动执行)
|
||
├── tdengine-init/ # TDengine 建库建表(首次启动自动执行)
|
||
└── data/ # 运行数据(首次启动自动创建,不入版本库)
|
||
```
|
||
|
||
全新初始化生成 95 张业务表(原有 91 张 + worker 异步恢复所需 4 张);已部署旧库不会自动执行新增迁移,见 `schema/README.md`。
|
||
|
||
编排已内置 TDengine(流量历史库),由 `tdengine-init` 服务在 TDengine 健康后自动建库建表:
|
||
|
||
| 库 | 分片 | 保留 | 超级表 |
|
||
| --- | --- | --- | --- |
|
||
| `iotlcm_daily` | 7 天 | 3 年 | `t_sim_card_usage_daily` |
|
||
| `iotlcm_monthly` | 30 天 | 3 年 | `t_sim_card_usage_monthly` |
|
||
|
||
结构取自生产环境,`tdengine-init` 会校验建表结果,缺表则报错退出。业务代码只读写不建表,因此这一步不能跳过。
|
||
|
||
TDengine 版本为 `3.3.6.13`(公开镜像可得),生产用的是 `3.4.0.9`。两者在流量历史的读写上一致;如需与生产完全对齐,可自行构建镜像并替换 `docker-compose.yml` 里的 tag。
|
||
|
||
## 上线前必改
|
||
|
||
默认口令仅用于快速试用。**正式部署前必须修改以下内容**,具体位置见[部署手册](../docs/docs/deploy/index.md):
|
||
|
||
| 项 | 位置 |
|
||
| --- | --- |
|
||
| 数据库口令(root 与应用账号) | `docker-compose.yml` + `config/*/config.yaml` + `schema/init.sql` |
|
||
| Redis 口令 | `docker-compose.yml` + `config/*/config.yaml` |
|
||
| RabbitMQ 口令 | `docker-compose.yml` + `config/*/config.yaml` |
|
||
| admin 初始口令 | `docker-compose.yml` + `schema/init.sql` |
|
||
| JWT 签名密钥 | `config/admin-svr`、`config/openapi`、`config/app-server` 三处 |
|
||
| 对外域名 | `config/nginx/iotlcm.conf` |
|
||
|
||
::: warning 改口令必须多处同步
|
||
因为配置文件里是字面值(未使用环境变量),改口令时**编排、配置、初始化脚本三处必须一致**,漏改会导致服务连不上数据库。
|
||
:::
|
||
|
||
## 重要提示
|
||
|
||
- **`JWT_SIGNING_KEY` 必须在 `admin-svr`、`openapi`、`app-server` 三者间完全一致**,否则令牌跨服务不通
|
||
- **镜像标签不要用 `latest`**,生产环境请固定到具体版本
|
||
- **改 `schema/` 下的脚本不会自动生效**,需要清空 `data/mysql` 重新初始化(会丢失全部数据)
|
||
- 默认只监听 `127.0.0.1` 的服务需通过反向代理对外
|
||
|
||
## 许可
|
||
|
||
[Apache License 2.0](LICENSE)
|