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>
89 行
3.1 KiB
Markdown
89 行
3.1 KiB
Markdown
# 配置说明
|
||
|
||
## `.env`
|
||
|
||
部署入口配置,控制镜像版本、服务 profile、域名和 MySQL/Redis 模式。
|
||
|
||
关键字段:
|
||
|
||
- `REGISTRY`:私有 Docker 镜像仓库。
|
||
- `IMAGE_TAG`:本次部署镜像版本。
|
||
- `COMPOSE_PROFILES`:启用的服务集合,例如 `base,im,push,update,license`。
|
||
- `MYSQL_MODE`:`external` 或 `managed`。
|
||
- `REDIS_MODE`:`external` 或 `managed`。
|
||
- `ENABLE_IM`、`ENABLE_PUSH`、`ENABLE_UPDATE`、`ENABLE_LICENSE`:运行时功能开关。
|
||
|
||
## `config/secrets.env`
|
||
|
||
敏感配置文件,不提交 Git。
|
||
|
||
关键字段:
|
||
|
||
- `MYSQL_PASSWORD`
|
||
- `MYSQL_ROOT_PASSWORD`
|
||
- `REDIS_PASSWORD`
|
||
- `SMTP_PASSWORD`
|
||
|
||
托管模式下,如果密码为空或为 `change-me`,脚本会自动生成并写回该文件。
|
||
|
||
## `config/xuqm.env`
|
||
|
||
业务服务共享配置,包含私有化运行模式、单租户初始化、域名和基础中间件连接信息。
|
||
|
||
私有化必须保持:
|
||
|
||
```env
|
||
DEPLOYMENT_MODE=PRIVATE
|
||
TENANT_REGISTER_ENABLED=false
|
||
TENANT_BOOTSTRAP_ENABLED=true
|
||
```
|
||
|
||
## Spring Boot 数据库 URL 覆盖(重要)
|
||
|
||
`tenant-service` 和 `file-service` 的 `application.yml` 中数据库 URL 编译期写死了生产地址。
|
||
私有化部署**必须**通过 `docker-compose.yml` 的 `environment:` 节覆盖 Spring Boot 配置:
|
||
|
||
```yaml
|
||
environment:
|
||
SPRING_DATASOURCE_URL: "jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT:-3306}/${MYSQL_DATABASE:-xuqm_private}?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true"
|
||
SPRING_DATASOURCE_USERNAME: "${MYSQL_USERNAME:-xuqm}"
|
||
SPRING_DATASOURCE_PASSWORD: "${MYSQL_PASSWORD}"
|
||
SPRING_DATA_REDIS_HOST: "${REDIS_HOST}"
|
||
SPRING_DATA_REDIS_PORT: "${REDIS_PORT:-6379}"
|
||
SPRING_DATA_REDIS_PASSWORD: "${REDIS_PASSWORD}"
|
||
SPRING_DATA_REDIS_DATABASE: "${REDIS_DATABASE:-0}"
|
||
```
|
||
|
||
这些 `${VAR}` 在启动时由 Docker Compose 从 `.env` 文件展开,优先级高于 `env_file:` 中的同名变量。
|
||
当前 `docker-compose.yml` 已包含上述覆盖,不需要手动修改。
|
||
|
||
## Nginx 服务端口
|
||
|
||
| 服务 | 容器内端口 | 说明 |
|
||
|------|-----------|------|
|
||
| tenant-service | **9001** | Spring Boot `server.port=9001`,nginx 必须代理到该端口 |
|
||
| file-service | **8086** | nginx 代理 `/file/` 路径时使用 |
|
||
| ops-web | 80 | nginx 代理 `/ops` 路径时使用 |
|
||
| tenant-web | 80 | nginx 代理 `/` 根路径时使用 |
|
||
|
||
## docs-site 镜像
|
||
|
||
`docs-site` 镜像在部分 ACR namespace 下不存在。`docker-compose.yml` 已将 nginx 对 `docs-site` 的依赖标记为 `required: false`,镜像缺失时 nginx 仍可正常启动,`healthcheck.sh` 将 docs-site 容器计为可选(WARN 而非 FAIL)。
|
||
|
||
## `config/sdk/xuqm-private-sdk.json`
|
||
|
||
私有化 SDK 初始化配置,由 `scripts/render-config.sh` 生成。
|
||
|
||
文档站和客户应用示例必须使用该文件,不再指向 `dev.xuqinmin.com` 公有化逻辑。
|
||
|
||
## `config/vendors`
|
||
|
||
厂商能力配置:
|
||
|
||
- `push.env`:华为、小米、OPPO、vivo、荣耀 Push 凭据。
|
||
- `store-submit.env`:华为、小米、OPPO、vivo、荣耀应用市场自动发布凭据。
|
||
|
||
## `config/mail/smtp.env`
|
||
|
||
邮件服务配置。生产环境必须使用客户提供的 SMTP 服务。
|