# 配置说明 ## `.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` 业务服务容器内配置,所有服务共享。私有化部署必须保持: ```env DEPLOYMENT_MODE=PRIVATE TENANT_REGISTER_ENABLED=false TENANT_BOOTSTRAP_ENABLED=true ``` SDK 对外地址也在此文件配置: ```env 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:` 节覆盖: ```yaml 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 网络直接使用服务名,不经过宿主机端口: ```yaml # 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 # .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,不再指向公有化地址。