73adad97f3
部署仓已改为开箱即用:config/ 直接是配置文件、口令等值内置在
docker-compose.yml、不再有 .env。
同步调整:
- 概览:部署流程改为 git clone + docker compose up -d 三步
- 配置说明:重写为「编排层 + 应用层」,说明为何不用环境变量
(GoFrame 不展开配置文件中的 ${VAR})、改口令需同步三处、
口令不能含 @ : / 等字符
- 启动与验证:去掉准备步骤,schema 脚本数改为 13 个
- 环境准备:镜像仓库改为描述编排文件中的实际地址
- 升级备份/离线/分离/自建镜像:.env 相关操作改为修改编排文件
4.5 KiB
4.5 KiB
title, description, outline
| title | description | outline |
|---|---|---|
| 启动与验证 | 首次启动流程、状态检查与验证清单 | deep |
启动与验证
启动
git clone <部署仓地址> iotlcm-deploy
cd iotlcm-deploy
# 首次部署建议前台启动,便于观察初始化过程
docker compose up
# 确认无误后转后台
docker compose up -d
不需要复制或修改任何文件,配置已带可用默认值。
首次启动发生什么
- MySQL 建库并导入 schema(约 1~2 分钟)
schema/下 13 个脚本按文件名顺序执行:建表 → 结构补齐 → 创建应用账号 → 重置种子账号口令 → 导入通道模板/字典/菜单等种子数据 - MySQL 通过健康检查后,
admin-svr、openapi、worker-svr依次启动 - 各服务向 Consul 注册
观察初始化进度:
docker compose logs -f mysql
看到 [initdb] 应用账号 u_iotlcm 已创建 与 [initdb] 种子账号口令已统一重置 表示初始化完成。
::: warning 初始化失败需清空数据卷
MySQL 只在 data/mysql 为空时执行 schema/。若中途失败,改完脚本必须清空卷才会重跑:
docker compose down
sudo rm -rf ./data/mysql
docker compose up -d
这会删除全部数据,仅限首次部署阶段使用。 :::
检查状态
docker compose ps
期望结果:
| 服务 | 状态 |
|---|---|
| iotlcm-mysql | Up (healthy) |
| iotlcm-redis | Up (healthy) |
| iotlcm-rabbitmq | Up (healthy) |
| iotlcm-consul | Up |
| iotlcm-admin-svr | Up |
| iotlcm-admin-ui | Up |
| iotlcm-openapi | Up |
| iotlcm-upstream-chan | Up |
| iotlcm-upstream-proxy | Up |
| iotlcm-worker-svr | Up |
| iotlcm-app-server | Up |
| iotlcm-app-web | Up |
| iotlcm-sms | Up (healthy) |
| iotlcm-docs | Up |
出现 Restarting 或 Exited 需查日志:
docker compose logs --tail=100 <服务名>
验证清单
按顺序逐项确认,任一步失败先解决再继续。
1. 数据库表数量
docker compose exec mysql sh -c \
'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e \
"SELECT COUNT(*) AS tables FROM information_schema.tables WHERE table_schema=\"db_iotlcm\";"'
预期 tables = 89。
2. 种子数据
docker compose exec mysql sh -c \
'mysql -uroot -p"$MYSQL_ROOT_PASSWORD" db_iotlcm -e \
"SELECT (SELECT COUNT(*) FROM sys_menu) AS menus, (SELECT COUNT(*) FROM sys_user) AS users;"'
预期菜单约 447 条,账号 18 个。
3. 管理端后端
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8008/api.json
预期 200。
4. 管理端前端
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8009/
预期 200。
5. 对外 API
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8000/api.json
预期 200。
6. 短信服务
curl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:11190/healthz
预期 200。
7. 浏览器登录
访问 http://<宿主机IP>:8009:
| 项 | 值 |
|---|---|
| 账号 | admin |
| 口令 | docker-compose.yml 中 admin 的默认口令(首次登录后立即修改) |
能进入首页工作台、左侧菜单完整显示即部署成功。
首次登录后必做
- 修改 admin 口令:右上角个人中心 → 安全设置
- 处理其余种子账号:
user02、2admin等 17 个账号默认与 admin 同一口令,不使用请停用或删除 - 确认字典与菜单加载:进入「卡信息」页,确认筛选下拉选项不为空
后端自检
# admin-svr 是否连上数据库
docker compose logs admin-svr | grep -iE 'error|panic' | tail -20
# worker-svr 是否连上 RabbitMQ
docker compose logs worker-svr | tail -30
# upstream-chan 是否连上 Redis 与 Consul
docker compose logs upstream-chan | tail -30
正常日志不应出现 connection refused、access denied、panic。
停止与重启
docker compose stop # 停止,保留数据
docker compose restart # 重启全部
docker compose restart admin-svr # 重启单个
docker compose down # 停止并删除容器(./data 不受影响)
::: danger 不要执行 down -v
-v 会删除命名数据卷。本编排数据都在 ./data 宿主机目录,但 -v 仍可能影响同项目的其他卷。停止服务用 down 即可。
:::