# XuqmGroup Private Deploy 私有化部署仓库只负责客户环境交付,不包含业务源码和 demo 前后端。 ## 快速开始 ```bash ./scripts/configure.sh vim .env vim config/secrets.env ./scripts/install.sh --profile base ./scripts/healthcheck.sh ``` 生产部署前必须完成: - 配置镜像仓库 `REGISTRY` 和版本 `IMAGE_TAG`。 - 选择 MySQL/Redis 模式:`external` 使用客户自备服务,`managed` 由脚本创建容器服务。 - 配置控制台、文档站、文件、IM、Push、Update、License 域名。 - 配置 SMTP、Push 厂商、应用市场发布凭据。 - 确认证书和反向代理策略,默认 Nginx 配置只作为模板入口。 ## 部署模式 MySQL、Redis 支持两种模式: - `external`:客户自备连接,脚本只校验连通性和权限。 - `managed`:脚本新建服务,自动创建数据库、账号、密码和数据目录。 生产环境默认推荐 `external/external`。 托管模式示例: ```bash ./scripts/install.sh --profile base --mysql-mode managed --redis-mode managed ``` 外部模式示例: ```bash ./scripts/install.sh --profile base --mysql-mode external --redis-mode external ``` ## 可选服务 - `base`:基础控制台、运营平台、文档站、文件服务。 - `im`:IM HTTP / WebSocket。 - `push`:厂商推送。 - `update`:版本管理、RN 热更新、应用市场自动发布。 - `license`:License 校验。 后期启用: ```bash ./scripts/enable-service.sh im ./scripts/enable-service.sh push ./scripts/enable-service.sh update ./scripts/enable-service.sh license ``` 禁用服务只修改部署配置并停止对应容器,不删除数据: ```bash ./scripts/disable-service.sh im ``` ## 租户迁移 将公有化平台的存量租户迁移到私有化部署(需源 MySQL 网络可达): ```bash ./scripts/migrate-tenant.sh \ --src-host <生产MySQL地址> \ --src-user <用户名> \ --src-password '<密码>' \ --tenant <租户邮箱或用户名> ``` 加 `--dry-run` 只打印 SQL 不执行。详见 `docs/runbook.md`。 ## 注意事项 - `tenant-service` 运行在容器内 **9001** 端口,nginx 代理必须指向该端口,不是 8080。 - `application.yml` 中数据库 URL 硬编码了生产地址,私有化部署依赖 `docker-compose.yml` 中的 `SPRING_DATASOURCE_*` 覆盖,不能删除 `environment:` 节。 - `docs-site` 镜像可选,不存在时 nginx 和 healthcheck 可正常工作(warn 级别)。 ## 接手入口 - 实时部署进度:`.deploy-state/progress.md` - 最近运行状态:`.deploy-state/current.json` - 最近健康检查:`.deploy-state/last-healthcheck.json` - 脚本审计日志:`logs/audit.log` - 交付说明:`docs/runbook.md` - 配置说明:`docs/configuration.md` - 验收清单:`docs/acceptance-checklist.md`