主要变更: - README.md: 重写,入口改为一键 install.sh,补充架构图和端口表 - runbook.md: 重写,移除旧脚本引用和内部 agent 规则,补充 nginx 配置和端口对照 - configuration.md: 更新端口表(11224-11231),移除 docs-site 引用, 补充内置 nginx 说明(nginx-bundled profile) - deployment-defaults.md: 改为通用模板,移除明文密码、真实 IP 和客户信息 - acceptance-checklist.md: 重写,改为直接 curl 端口验证,补充 license 和 nginx 验收项 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.9 KiB
3.9 KiB
配置说明
.env
主配置文件,由 install.sh 自动生成,控制镜像版本、启用的服务和中间件连接信息。
关键字段:
| 字段 | 说明 |
|---|---|
REGISTRY |
Docker 镜像仓库地址 |
IMAGE_TAG |
镜像版本,默认 latest |
COMPOSE_PROFILES |
启用的服务集合,默认 base,infra-mysql,infra-redis,im,push,update,license |
MYSQL_MODE |
managed(容器托管)或 external(客户自备) |
REDIS_MODE |
managed 或 external |
CONSOLE_DOMAIN |
对外访问地址,用于服务间跳转和 SDK 配置 |
config/secrets.env
敏感配置,权限 600,不提交 Git。
| 字段 | 说明 |
|---|---|
MYSQL_ROOT_PASSWORD |
MySQL root 密码 |
MYSQL_PASSWORD |
业务账号密码 |
REDIS_PASSWORD |
Redis 密码 |
config/xuqm.env
业务服务容器内配置,所有服务共享。私有化部署必须保持:
DEPLOYMENT_MODE=PRIVATE
TENANT_REGISTER_ENABLED=false
TENANT_BOOTSTRAP_ENABLED=true
SDK 对外地址也在此文件配置:
CONSOLE_DOMAIN=http://your-domain-or-ip
SDK_FILE_SERVICE_URL=http://your-domain-or-ip
SDK_IM_API_URL=http://your-domain-or-ip
SDK_IM_WS_URL=ws://your-domain-or-ip/ws/im
config/tenant/bootstrap.env
初始租户配置,权限 600。迁移模式下由迁移流程自动覆盖。
Spring Boot 数据库 URL 覆盖
application.yml 中数据库 URL 硬编码了生产地址。私有化部署必须通过 docker-compose.yml 的 environment: 节覆盖:
environment:
SPRING_DATASOURCE_URL: "jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT:-3306}/${MYSQL_DATABASE:-xuqm_private}?..."
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}"
docker-compose.yml 已包含此配置,不需要手动修改。
服务端口
各服务容器内端口固定,宿主机端口从 11224 顺序分配:
| 宿主机端口 | 服务 | 容器内端口 | nginx 路由 |
|---|---|---|---|
| 11224 | tenant-service | 9001 | /api/ /actuator/ |
| 11225 | file-service | 8086 | /file/ |
| 11226 | tenant-web | 80 | /(兜底路由) |
| 11227 | ops-web | 80 | /ops |
| 11228 | im-service | 8082 | /api/im/ /ws/im |
| 11229 | update-service | 8084 | /api/v1/updates/ /api/v1/rn/ |
| 11230 | license-service | 8085 | /api/license/ |
| 11231 | push-service | 8083 | 厂商回调(按需) |
所有端口绑定 127.0.0.1,nginx 需写 proxy_pass http://127.0.0.1:1122x。
容器内部通信
容器间通过 Docker 网络直接使用服务名,不经过宿主机端口:
# im-service
TENANT_SERVICE_URL: "http://tenant-service:9001"
PUSH_SERVICE_URL: "http://push-service:8083"
# update-service
SDK_TENANT_SERVICE_URL: "http://tenant-service:9001"
docker-compose.yml 已包含上述配置,不需要手动修改。
内置 nginx(可选)
nginx-bundled profile 提供内置 nginx 容器,默认不启动。通常用宿主机自己的 nginx 代理到各服务端口。需要内置 nginx 时:
# .env
COMPOSE_PROFILES=base,infra-mysql,infra-redis,im,push,update,license,nginx-bundled
内置 nginx 绑定宿主机 80/443 端口,与宿主机已有 nginx 冲突时不可同时使用。
config/vendors/
| 文件 | 说明 |
|---|---|
push.env |
华为/小米/OPPO/vivo/荣耀/APNs/FCM 推送凭据,默认全部 false |
store-submit.env |
应用市场自动发布凭据,默认全部 false |
config/mail/smtp.env
邮件服务配置,不填则邮件功能不可用,不影响其他服务启动。
config/sdk/xuqm-private-sdk.json
SDK 初始化配置,由 deploy.sh 自动生成,客户端应用使用此文件初始化 SDK,不再指向公有化地址。