# IotLCM 部署仓 IotLCM 物联网卡管理平台的部署编排与数据库初始化脚本。使用 Docker Compose 在单机上拉起完整平台。 ## 部署内容 | 类别 | 服务 | | --- | --- | | 基础组件 | MySQL、Redis、RabbitMQ、Consul | | 业务服务 | admin-svr(管理端后端)、admin-ui(管理端前端)、openapi(对外 API)、app-server(小程序后端)、app-web(小程序前端)、upstream-chan(运营商对接)、upstream-proxy(通道缓存转发)、worker-svr(异步任务)、sms(短信)、docs(文档站) | | 可选 | onelink-mock(运营商接口挡板)、bot(飞书通知)、nginx(反向代理) | ## 快速开始 ```bash # 1. 准备环境变量 cp .env.example .env vi .env # 填镜像仓库、各项口令 # 2. 准备配置 cp -r config.example config vi config/*/config.yaml # 逐份填写(标注「必改」的项) # 3. 启动 docker compose up -d # 4. 查看状态 docker compose ps ``` 首次启动会自动建库并导入 schema,MySQL 初始化约需 1~2 分钟。等待 `iotlcm-mysql` 健康后其余服务才会启动。 启动完成后访问 `http://<宿主机IP>:8009`,账号 `admin`,口令为 `.env` 中的 `MYSQL_ADMIN_PASSWORD`。 ## 文档 | 文档 | 内容 | | --- | --- | | [环境准备](docs/01-环境准备.md) | 硬件、系统、Docker 版本要求 | | [配置说明](docs/02-配置说明.md) | `.env` 与 `config/` 各项含义 | | [启动与验证](docs/03-启动与验证.md) | 启动流程、健康检查、首次登录 | | [可选服务](docs/04-可选服务.md) | 挡板、飞书通知、自带反向代理 | | [升级与备份](docs/05-升级与备份.md) | 版本固定、升级、数据备份 | | [故障排查](docs/06-故障排查.md) | 常见问题与处理 | ## 目录结构 ``` iotlcm-deploy/ ├── docker-compose.yml # 服务编排 ├── .env.example # 环境变量模板 → 复制为 .env ├── config.example/ # 配置模板 → 复制为 config/ │ ├── admin-svr/ │ ├── admin-ui/ │ ├── app-server/ │ ├── bot/ │ ├── nginx/ │ ├── openapi/ │ ├── sms/ │ ├── upstream-chan/ │ ├── upstream-proxy/ │ └── worker-svr/ ├── schema/ # 数据库初始化脚本(首次启动自动执行) ├── docs/ # 部署文档 ├── config/ # 实际配置(不入版本库) └── data/ # 运行数据(不入版本库) ``` `config/` 与 `data/` 在 `.gitignore` 中,不会被提交。 ## 重要提示 - **`JWT_SIGNING_KEY` 必须在 `admin-svr`、`openapi`、`app-server` 三者间完全一致**,否则令牌跨服务不通 - **镜像标签不要用 `latest`**,生产环境请固定到具体版本 - **改 `schema/` 下的脚本不会自动生效**,需要清空 `data/mysql` 重新初始化(会丢失全部数据) - 默认只监听 `127.0.0.1` 的服务需通过反向代理对外,见[可选服务](docs/04-可选服务.md)