XuqmGroup-PrivateDeploy/docs/configuration.md
徐勤民 aa5bccae11 feat(deploy): 完成私有化部署全流程验收
- 更新部署进度文档,标记P5-02/P5-03为已完成状态
- 修复中文乱码问题,MySQL数据层使用UNHEX函数配合nginx字符集设置
- 配置im-service和update-service的内部服务URL,从127.0.0.1改为Docker服务名
- 实现全功能验收,nginx为所有服务添加路由映射并返回正确的状态码
- 创建私有化部署默认信息文档,记录完整的部署配置和访问地址
- 添加部署清理脚本clean.sh,支持一键清理容器、配置和数据目录
- 更新敏感配置模板,添加详细的密码和密钥配置说明
- 优化前端实时消息轮询机制,通过WebSocket心跳检测决定是否启用HTTP轮询回退
2026-05-19 19:23:28 +08:00

3.8 KiB

配置说明

.env

部署入口配置,控制镜像版本、服务 profile、域名和 MySQL/Redis 模式。

关键字段:

  • REGISTRY:私有 Docker 镜像仓库。
  • IMAGE_TAG:本次部署镜像版本。
  • COMPOSE_PROFILES:启用的服务集合,例如 base,im,push,update,license
  • MYSQL_MODEexternalmanaged
  • REDIS_MODEexternalmanaged
  • ENABLE_IMENABLE_PUSHENABLE_UPDATEENABLE_LICENSE:运行时功能开关。

config/secrets.env

敏感配置文件,不提交 Git。

关键字段:

  • MYSQL_PASSWORD
  • MYSQL_ROOT_PASSWORD
  • REDIS_PASSWORD
  • SMTP_PASSWORD

托管模式下,如果密码为空或为 change-me,脚本会自动生成并写回该文件。

config/xuqm.env

业务服务共享配置,包含私有化运行模式、单租户初始化、域名和基础中间件连接信息。

私有化必须保持:

DEPLOYMENT_MODE=PRIVATE
TENANT_REGISTER_ENABLED=false
TENANT_BOOTSTRAP_ENABLED=true

Spring Boot 数据库 URL 覆盖(重要)

tenant-servicefile-serviceapplication.yml 中数据库 URL 编译期写死了生产地址。 私有化部署必须通过 docker-compose.ymlenvironment: 节覆盖 Spring Boot 配置:

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 服务端口

服务 容器内端口 nginx 路由
tenant-service 9001 /api/(兜底),/actuator/
file-service 8086 /file/
im-service 8082 /api/im//ws/im/WebSocket
push-service 8083 厂商回调(不直接暴露给前端)
update-service 8084 /api/v1/updates//api/v1/rn/
license-service 8085 内部调用
ops-web 80 /ops
tenant-web 80 /(根路径)

可选服务内部通信

im-service 和 update-service 在调用 tenant-service 内部 API 时,需要显式覆盖默认地址:

# im-service
environment:
  TENANT_SERVICE_URL: "http://tenant-service:9001"
  PUSH_SERVICE_URL: "http://push-service:8083"

# update-service
environment:
  SDK_TENANT_SERVICE_URL: "http://tenant-service:9001"

push-service 默认已使用 http://tenant-service:9001,无需额外配置。

docker-compose.yml 已包含上述覆盖,不需要手动修改。

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 服务。