XuqmGroup-PrivateDeploy/README.md
徐勤民 f0649e9305 feat: 数字医信一键部署脚本 + 文档整理
scripts/deploy-szyx.sh (新增):
  七步幂等脚本,覆盖从预检到验收全流程:
  1. Docker / Compose / 磁盘 / 端口预检
  2. 写入数字医信专属配置(.env / secrets.env / xuqm.env /
     nginx / sdk-json),所有值固化为默认值,支持环境变量覆盖
  3. 登录 ACR (crpi-n44qjpuucgjt8e8c.cn-beijing.personal.cr.aliyuncs.com)
  4. 启动 MySQL + Redis 并轮询就绪
  5. 启动 base profile 业务容器并等待 actuator/health
  6. 迁移数字医信生产租户(szyx@bjca.org.cn),已迁移时自动跳过
  7. 验收:health / PRIVATE 模式 / 两个 appKey SDK config / 注册阻断 / 前端

docs/configuration.md:
  补充 Spring Boot SPRING_DATASOURCE_* 覆盖说明(application.yml
  硬编码生产 DB URL 的关键陷阱),nginx 服务端口对照表,
  docs-site 镜像可选说明。

docs/runbook.md:
  新增租户迁移章节,含前提、命令、自动步骤、验证示例。

README.md:
  快速参考:migrate-tenant.sh 用法、三条部署注意事项。

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 08:01:19 +08:00

2.8 KiB

XuqmGroup Private Deploy

私有化部署仓库只负责客户环境交付,不包含业务源码和 demo 前后端。

快速开始

./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

托管模式示例:

./scripts/install.sh --profile base --mysql-mode managed --redis-mode managed

外部模式示例:

./scripts/install.sh --profile base --mysql-mode external --redis-mode external

可选服务

  • base:基础控制台、运营平台、文档站、文件服务。
  • imIM HTTP / WebSocket。
  • push:厂商推送。
  • update版本管理、RN 热更新、应用市场自动发布。
  • licenseLicense 校验。

后期启用:

./scripts/enable-service.sh im
./scripts/enable-service.sh push
./scripts/enable-service.sh update
./scripts/enable-service.sh license

禁用服务只修改部署配置并停止对应容器,不删除数据:

./scripts/disable-service.sh im

租户迁移

将公有化平台的存量租户迁移到私有化部署(需源 MySQL 网络可达):

./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