# 配置文件说明 ## 多环境配置 本项目支持多环境配置,通过 `GO_ENV` 环境变量自动选择对应的配置文件。 ### 环境配置文件 - `config.dev.yaml` - 开发环境配置 - `config.prod.yaml` - 生产环境配置 - `config.staging.yaml` - 预发布环境配置(可选) - `config.test.yaml` - 测试环境配置(可选) - `config.yaml` - 默认配置文件(回退) ### 使用方法 #### 1. 开发环境(默认) ```bash # 不设置 GO_ENV,默认使用开发环境 go run main.go # 或显式设置 GO_ENV=development go run main.go GO_ENV=dev go run main.go ``` 使用配置文件:`config.dev.yaml` #### 2. 生产环境 ```bash GO_ENV=production go run main.go # 或 GO_ENV=prod go run main.go ``` 使用配置文件:`config.prod.yaml` #### 3. 预发布环境 ```bash GO_ENV=staging go run main.go # 或 GO_ENV=stage go run main.go ``` 使用配置文件:`config.staging.yaml` #### 4. 测试环境 ```bash GO_ENV=test go run main.go ``` 使用配置文件:`config.test.yaml` ### Windows PowerShell 设置环境变量 ```powershell # 临时设置(仅当前会话) $env:GO_ENV="production" go run main.go # 或一行命令 $env:GO_ENV="production"; go run main.go ``` ### Windows CMD 设置环境变量 ```cmd # 临时设置 set GO_ENV=production go run main.go # 或一行命令 set GO_ENV=production && go run main.go ``` ### Linux/Mac 设置环境变量 ```bash # 临时设置 export GO_ENV=production go run main.go # 或一行命令 GO_ENV=production go run main.go ``` ## 环境变量覆盖 敏感配置项可以通过环境变量覆盖,优先级高于配置文件: - `DB_PASSWORD` - 数据库密码 - `JWT_SECRET` - JWT 密钥 - `REDIS_PASSWORD` - Redis 密码 示例: ```bash # Linux/Mac export DB_PASSWORD="your_secure_password" export JWT_SECRET="your_jwt_secret_key" GO_ENV=production go run main.go # Windows PowerShell $env:DB_PASSWORD="your_secure_password" $env:JWT_SECRET="your_jwt_secret_key" $env:GO_ENV="production" go run main.go ``` ## 配置文件优先级 1. 环境变量(最高优先级) 2. 环境特定配置文件(如 `config.prod.yaml`) 3. 默认配置文件(`config.yaml`) 4. 代码中的默认值(最低优先级) ## 首次使用 1. 复制 `config.example.yaml` 为 `config.yaml` 2. 修改 `config.yaml` 中的配置项 3. 运行应用 ```bash # Windows copy config.example.yaml config.yaml # Linux/Mac cp config.example.yaml config.yaml ``` ## 生产环境部署建议 1. ✅ 不要将包含敏感信息的配置文件提交到版本控制 2. ✅ 使用环境变量设置所有敏感配置 3. ✅ 在生产环境使用 `config.prod.yaml` 4. ✅ 确保 JWT Secret 使用强随机字符串 5. ✅ 数据库密码使用环境变量而不是写在配置文件中 ## .gitignore 建议 ```gitignore # 配置文件 config/config.yaml config/config.*.yaml !config/config.example.yaml # 日志文件 logs/ *.log ``` ## 配置验证 启动时会在日志中显示加载的配置信息: ``` Loaded configuration for environment: production (file: config.prod.yaml) Server mode: release, App environment: production ``` 确认配置加载正确后再继续使用。