# 生产环境配置说明 本文档说明如何使用 `application-prod.yaml` 配置文件。 ## 配置架构 ### 三层配置体系 ``` 1. application.yaml (基础配置) ↓ 2. application-prod.yaml (生产环境配置 + 环境变量占位符) ↓ 3. Nacos 配置中心 (动态配置,优先级最高) ``` ### 配置优先级 ``` Nacos 配置 > 环境变量 > application-prod.yaml 默认值 > application.yaml ``` ## 环境变量命名规范 ### 通用环境变量 | 环境变量 | 说明 | 默认值 | 示例 | |---------|------|--------|------| | `NACOS_SERVER_ADDR` | Nacos 服务器地址 | 127.0.0.1:8848 | 127.0.0.1:8848 | | `NACOS_USERNAME` | Nacos 用户名 | 空 | nacos | | `NACOS_PASSWORD` | Nacos 密码 | 空 | nacos123 | | `NACOS_NAMESPACE` | Nacos 命名空间 | 空 | prod | | `NACOS_GROUP` | Nacos 分组 | DEFAULT_GROUP | DEFAULT_GROUP | ### 数据库环境变量 | 环境变量 | 说明 | 默认值 | |---------|------|--------| | `MYSQL_HOST` | MySQL 主机地址 | 127.0.0.1 | | `MYSQL_PORT` | MySQL 端口 | 3306 | | `MYSQL_DATABASE` | 数据库名 | aiot_platform | | `MYSQL_USER` | 数据库用户名 | root | | `MYSQL_PASSWORD` | 数据库密码 | 空 | ### Redis 环境变量 | 环境变量 | 说明 | 默认值 | |---------|------|--------| | `REDIS_HOST` | Redis 主机地址 | 127.0.0.1 | | `REDIS_PORT` | Redis 端口 | 6379 | | `REDIS_DATABASE` | Redis 数据库索引 | 0 | | `REDIS_PASSWORD` | Redis 密码 | 空 | ### 消息队列环境变量 | 环境变量 | 说明 | 默认值 | |---------|------|--------| | `ROCKETMQ_NAMESRV_ADDR` | RocketMQ NameServer 地址 | 127.0.0.1:9876 | ## 使用方式 ### 方式 1: Docker Compose 环境变量注入(推荐) 在 `docker-compose.core.yml` 中已配置: ```yaml viewsh-module-system-server: environment: SPRING_PROFILES_ACTIVE: prod # ← 激活 prod 配置 NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT} MYSQL_HOST: ${MYSQL_HOST} MYSQL_PASSWORD: ${MYSQL_PASSWORD} # ... 其他环境变量 ``` ### 方式 2: Nacos 配置中心覆盖 在 Nacos 控制台创建配置文件,会覆盖环境变量和本地配置: **Data ID**: `system-server-prod.yaml` **Group**: `DEFAULT_GROUP` ```yaml spring: datasource: dynamic: datasource: master: password: 从Nacos管理的密码 # ← 覆盖环境变量 ``` ### 方式 3: 混合使用(最佳实践) - **环境变量**:配置基础设施连接信息(MySQL、Redis、Nacos) - **Nacos**:配置业务参数、功能开关、动态配置 ## 各服务配置差异 ### 需要 MySQL 的服务 - `viewsh-module-system-server` - `viewsh-module-infra-server` - `viewsh-module-iot-server` ### 需要 RocketMQ 的服务 - `viewsh-module-iot-server` - `viewsh-module-iot-gateway` ### 仅需要 Redis 的服务 - `viewsh-gateway` - `viewsh-module-iot-gateway` ## 激活生产环境配置 ### 在 Docker Compose 中 已在 `docker-compose.core.yml` 中配置: ```yaml environment: SPRING_PROFILES_ACTIVE: prod ``` ### 手动启动 ```bash java -jar app.jar --spring.profiles.active=prod ``` ## 配置验证 ### 查看生效的配置 ```bash # 进入容器 docker exec -it aiot-system-server sh # 查看环境变量 env | grep MYSQL env | grep REDIS # 查看 Spring Boot 配置 curl http://localhost:48081/actuator/env ``` ## 常见问题 ### Q: 如何确认使用了 prod 配置? A: 查看日志,应该看到: ``` The following 1 profile is active: "prod" ``` ### Q: 环境变量和 Nacos 哪个优先级高? A: Nacos 配置优先级最高,会覆盖环境变量。 ### Q: 如何临时修改配置? A: 1. **临时修改**:在 Nacos 中修改(无需重启) 2. **永久修改**:修改 `.env` 文件并重启容器 ## 配置文件位置 ``` viewsh-gateway/src/main/resources/application-prod.yaml viewsh-module-system/viewsh-module-system-server/src/main/resources/application-prod.yaml viewsh-module-infra/viewsh-module-infra-server/src/main/resources/application-prod.yaml viewsh-module-iot/viewsh-module-iot-server/src/main/resources/application-prod.yaml viewsh-module-iot/viewsh-module-iot-gateway/src/main/resources/application-prod.yaml ``` ## 下一步 配置完成后,参考 [部署操作指南](deployment-guide.md) 进行部署。