2025-07-11 21:05:58 +08:00
2025-07-11 21:05:58 +08:00
2025-07-11 21:05:58 +08:00
2025-07-11 21:05:58 +08:00
2025-07-11 21:05:58 +08:00
2025-07-11 21:05:58 +08:00
2025-07-11 21:05:58 +08:00
2025-07-02 16:17:59 +08:00
2025-07-11 21:05:58 +08:00
2025-07-11 21:05:58 +08:00
2025-07-11 21:05:58 +08:00
2025-07-11 21:05:58 +08:00
2025-07-11 21:05:58 +08:00

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)

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)

app:
    env: "production"

database:
    host: "prod-db.example.com"
    password: "prod_secure_password"

运行时

# 使用开发环境配置
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. 生产环境:应通过环境变量注入,不应出现在配置文件中

配置验证

系统在启动时会验证必要的配置项,确保应用能够正常运行。如果缺少关键配置,系统将拒绝启动并提供明确的错误信息。

Description
No description provided
Readme 72 MiB
Languages
Go 98.4%
Makefile 0.6%
Shell 0.5%
PowerShell 0.3%