XuqmGroup私有化部署仓库
转到文件
徐勤民 e5ffde39a0 fix(docker-compose): add SPRING_DATASOURCE/REDIS overrides to all services
im-service, push-service, update-service, license-service were missing the
SPRING_DATASOURCE_URL/USERNAME/PASSWORD environment overrides that tenant-service
and file-service already had. Without these, all services connected to the
hardcoded production database (39.107.53.187) instead of the local private MySQL,
causing mutations in the private deployment to affect the public platform.

im-service also gets SPRING_DATA_REDIS_* overrides to replace the hardcoded
redisdev.xuqinmin.com Redis connection.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-19 18:23:27 +08:00
.deploy-state chore: scaffold private deployment repository 2026-05-18 19:49:31 +08:00
config fix(nginx): WebSocket trailing slash, 413 on file upload, domain+HTTPS support 2026-05-19 18:12:48 +08:00
data chore: scaffold private deployment repository 2026-05-18 19:49:31 +08:00
docs feat: 数字医信一键部署脚本 + 文档整理 2026-05-19 08:01:19 +08:00
logs chore: scaffold private deployment repository 2026-05-18 19:49:31 +08:00
scripts fix(nginx): WebSocket trailing slash, 413 on file upload, domain+HTTPS support 2026-05-19 18:12:48 +08:00
templates chore: scaffold private deployment repository 2026-05-18 19:49:31 +08:00
.env.example chore: scaffold private deployment repository 2026-05-18 19:49:31 +08:00
.gitignore chore: scaffold private deployment repository 2026-05-18 19:49:31 +08:00
docker-compose.infra.yml feat: 一键安装向导 + 交互式租户初始化 2026-05-19 14:29:57 +08:00
docker-compose.yml fix(docker-compose): add SPRING_DATASOURCE/REDIS overrides to all services 2026-05-19 18:23:27 +08:00
image-manifest.json chore: scaffold private deployment repository 2026-05-18 19:49:31 +08:00
install.sh fix(install): exclude data/ from tar extraction on reinstall 2026-05-19 15:59:57 +08:00
README.md feat: 数字医信一键部署脚本 + 文档整理 2026-05-19 08:01:19 +08:00
VERSION chore: scaffold private deployment repository 2026-05-18 19:49:31 +08:00

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