Files
tyapi-server/README.md

108 lines
2.7 KiB
Markdown

# TYAPI 服务端配置系统
## 配置系统设计
TYAPI 服务端采用分层配置系统,使配置管理更加灵活和清晰:
1. **基础配置文件** (`config.yaml`): 包含所有配置项和默认值
2. **环境特定配置文件** (`configs/env.<环境>.yaml`): 包含特定环境需要覆盖的配置项
3. **环境变量**: 可以覆盖任何配置项,优先级最高
## 配置文件格式
所有配置文件采用 YAML 格式,保持相同的结构层次。
### 基础配置文件 (config.yaml)
包含所有配置项和默认值,作为配置的基础。
### 环境配置文件
环境配置文件只需包含需要覆盖的配置项,保持与基础配置相同的层次结构:
- `configs/env.development.yaml`: 开发环境配置
- `configs/env.testing.yaml`: 测试环境配置
- `configs/env.production.yaml`: 生产环境配置
## 配置加载顺序
系统按以下顺序加载配置,后加载的会覆盖先加载的:
1. 首先加载基础配置文件 `config.yaml`
2. 然后加载环境特定配置文件 `configs/env.<环境>.yaml`
3. 最后应用环境变量覆盖
## 环境确定方式
系统按以下优先级确定当前环境:
1. `CONFIG_ENV` 环境变量
2. `ENV` 环境变量
3. `APP_ENV` 环境变量
4. 默认值 `development`
## 统一配置项
某些配置项在所有环境中保持一致,直接在基础配置文件中设置:
1. **短信配置**: 所有环境使用相同的短信服务配置
2. **基础服务地址**: 如第三方服务端点等
## 使用示例
### 基础配置 (config.yaml)
```yaml
app:
name: "TYAPI Server"
version: "1.0.0"
env: "development"
database:
host: "localhost"
port: "5432"
user: "postgres"
password: "default_password"
# 统一的短信配置
sms:
access_key_id: "LTAI5tKGB3TVJbMHSoZN3yr9"
access_key_secret: "OCQ30GWp4yENMjmfOAaagksE18bp65"
endpoint_url: "dysmsapi.aliyuncs.com"
```
### 环境配置 (configs/env.production.yaml)
```yaml
app:
env: "production"
database:
host: "prod-db.example.com"
password: "prod_secure_password"
```
### 运行时
```bash
# 使用开发环境配置
go run cmd/api/main.go
# 使用生产环境配置
ENV=production go run cmd/api/main.go
# 使用环境变量覆盖特定配置
ENV=production DB_PASSWORD=custom_password go run cmd/api/main.go
```
## 敏感信息处理
对于敏感信息(如密码、密钥等):
1. 开发环境:可以放在环境配置文件中
2. 生产环境:应通过环境变量注入,不应出现在配置文件中
## 配置验证
系统在启动时会验证必要的配置项,确保应用能够正常运行。如果缺少关键配置,系统将拒绝启动并提供明确的错误信息。