--- title: 部署概览 description: IotLCM 平台的部署方式、构成与前置条件 outline: deep --- # 部署概览 IotLCM 平台通过 Docker Compose 在单机上部署。部署编排与数据库初始化脚本在独立仓库: ```bash git clone https://git.5iot.com/iotlcm-public/iotlcm-deploy.git cd iotlcm-deploy ``` ```text iotlcm-deploy/ ├── docker-compose.yml # 服务编排 ├── .env.example # 环境变量模板 ├── config.example/ # 应用配置模板(10 份) └── schema/ # 数据库初始化脚本(12 个) ``` ## 部署内容 | 类别 | 服务 | | --- | --- | | 基础组件 | MySQL、Redis、RabbitMQ、Consul | | 管理端 | admin-svr(后端)、admin-ui(前端) | | 对外接口 | openapi | | 小程序 / H5 | app-server(后端)、app-web(前端) | | 运营商对接 | upstream-chan(协议适配)、upstream-proxy(缓存转发) | | 异步任务 | worker-svr(批次执行、全量同步) | | 配套 | sms(短信)、docs(本文档站) | | 可选 | onelink-mock(运营商接口挡板)、bot(飞书通知)、nginx(反向代理) | ## 部署流程 ```bash cp .env.example .env # 1. 环境变量 cp -r config.example config # 2. 应用配置 docker compose up -d # 3. 启动 ``` 首次启动自动建库并导入 schema,约 1~2 分钟。 ## 文档导航 | 文档 | 内容 | | --- | --- | | [环境准备](prerequisites) | 硬件、系统、Docker 版本、端口规划 | | [配置说明](configuration) | `.env` 与 `config/` 各项含义 | | [启动与验证](install) | 启动流程、验证清单、首次登录 | | [可选服务](optional) | 接口挡板、飞书通知、反向代理 | | [升级与备份](operations) | 版本固定、升级回滚、数据备份 | | [故障排查](troubleshooting) | 常见问题与处理 | ## 关键约束 ::: warning JWT 密钥必须三处一致 `admin-svr`、`openapi`、`app-server` 共用同一个 `JWT_SIGNING_KEY`。不一致的表现是能登录管理端,但调用外部 API 或小程序端提示未授权。 更换该值会使已签发的全部登录态与接口令牌立即失效,需在维护窗口操作。 ::: ::: tip 镜像标签不要用 latest 生产环境必须把 `TAG` 固定到具体版本号。`latest` 会随仓库推送变化,同一份编排在不同时间拉到的镜像不同,出问题无法定位,也无法明确回滚。 ::: ::: danger 修改 schema 脚本不会自动生效 数据库初始化只在 `data/mysql` 为空时执行。改了 `schema/` 下的脚本必须清空数据卷才会重跑,而清空会丢失全部数据。生产环境禁止这样操作。 ::: ## 服务端口 默认端口规划: | 端口 | 服务 | 是否对外 | | --- | --- | --- | | 8000 | openapi | 经反向代理 | | 8008 | admin-svr | 经反向代理 | | 8009 | admin-ui | 经反向代理 | | 8010 | app-server | 经反向代理 | | 8018 | app-web | 经反向代理 | | 8019 | docs | 经反向代理 | | 3306 / 6379 / 5672 / 8500 | MySQL / Redis / RabbitMQ / Consul | 仅内网 | | 8110 / 8310 / 8510 | upstream-chan / upstream-proxy | 仅内网 | | 11190 / 11200 | sms | 仅内网 | | 8080 | onelink-mock | 仅联调 | 端口冲突时修改 `.env` 中对应变量,不要直接改 `docker-compose.yml`。