feat: 一键部署——配置内置默认值,去掉示例复制与环境变量

目标:git clone 后 docker compose up -d 直接可用,无需任何手工准备。

变更:
- config.example/ → config/,config.example.yaml → config.yaml
  不再需要 cp -r 与逐份修改
- 删除 .env / .env.example,值全部内置到 docker-compose.yml
  (GoFrame 不展开配置文件中的 ${VAR},环境变量方案在 Go 侧不可用)
- 配置文件里的 ${VAR} 全部替换为字面默认值
- schema/04-users.sh 与 05-reset-passwords.sh 改为脚本内字面口令,
  不再读取环境变量
- 新增 schema/13-seed-flow-package.sql 占位文件,说明套餐表为空的原因与补齐方式
- .gitignore 不再排除 config/ 与 .env(已无 .env)
- README 改为「一键启动」+「上线前必改」两张表

已验证:docker compose config 通过;compose 口令、各配置文件 DSN、
初始化脚本三处口令哈希一致;库名与 schema 中一致。
This commit is contained in:
MiFaZhan
2026-10-29 09:17:26 +08:00
parent 0bfc0ebe80
commit 5ddad0c5e5
18 changed files with 252 additions and 299 deletions
+64 -47
View File
@@ -2,6 +2,41 @@
IotLCM 物联网卡管理平台的部署编排与数据库初始化脚本。使用 Docker Compose 在单机上拉起完整平台。
## 一键启动
```bash
git clone <本仓库地址> iotlcm-deploy
cd iotlcm-deploy
docker compose up -d
```
无需复制或修改任何文件,配置里已带可用默认值。首次启动会自动建库、建表、创建应用账号并导入种子数据,约需 1~2 分钟。
等待 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`
## 部署内容
| 类别 | 服务 |
@@ -10,59 +45,42 @@ IotLCM 物联网卡管理平台的部署编排与数据库初始化脚本。使
| 业务服务 | 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`。
需要按需开启的可选服务:
```bash
docker compose --profile with-mock up -d # 运营商接口挡板
docker compose --profile with-bot up -d # 飞书通知
docker compose --profile with-nginx up -d # 自带反向代理
```
## 目录结构
```
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/
├── 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/ # 数据库初始化脚本(首次启动自动执行)
├── config/ # 实际配置(不入版本库)
└── data/ # 运行数据(不入版本库)
└── data/ # 运行数据(首次启动自动创建,不入版本库)
```
`config/` 与 `data/` 在 `.gitignore` 中,不会被提交。
## 上线前必改
默认口令仅用于快速试用。**正式部署前必须修改以下内容**,具体位置见[部署手册](https://git.5iot.com/iotlcm-public/iotlcm-docs):
| 项 | 位置 |
| --- | --- |
| 数据库口令(root 与应用账号) | `docker-compose.yml` + `config/*/config.yaml` + `schema/04-users.sh` |
| Redis 口令 | `docker-compose.yml` + `config/*/config.yaml` |
| RabbitMQ 口令 | `docker-compose.yml` + `config/*/config.yaml` |
| admin 初始口令 | `docker-compose.yml` + `schema/05-reset-passwords.sh` |
| JWT 签名密钥 | `config/admin-svr`、`config/openapi`、`config/app-server` 三处 |
| 对外域名 | `config/nginx/iotlcm.conf` |
::: warning 改口令必须多处同步
因为配置文件里是字面值(未使用环境变量),改口令时**编排、配置、初始化脚本三处必须一致**,漏改会导致服务连不上数据库。
:::
## 重要提示
@@ -70,7 +88,6 @@ iotlcm-deploy/
- **镜像标签不要用 `latest`**,生产环境请固定到具体版本
- **改 `schema/` 下的脚本不会自动生效**,需要清空 `data/mysql` 重新初始化(会丢失全部数据)
- 默认只监听 `127.0.0.1` 的服务需通过反向代理对外
- 数据库初始化脚本的详细说明见 [`schema/README.md`](schema/README.md)
## 许可