Files
2025-11-17 13:39:05 +08:00
..
2025-11-17 13:39:05 +08:00
2025-11-17 13:39:05 +08:00
2025-11-17 13:39:05 +08:00
2025-11-17 13:39:05 +08:00
2025-11-17 13:39:05 +08:00
2025-11-17 13:39:05 +08:00

配置文件说明

多环境配置

本项目支持多环境配置,通过 GO_ENV 环境变量自动选择对应的配置文件。

环境配置文件

  • config.dev.yaml - 开发环境配置
  • config.prod.yaml - 生产环境配置
  • config.staging.yaml - 预发布环境配置(可选)
  • config.test.yaml - 测试环境配置(可选)
  • config.yaml - 默认配置文件(回退)

使用方法

1. 开发环境(默认)

# 不设置 GO_ENV默认使用开发环境
go run main.go

# 或显式设置
GO_ENV=development go run main.go
GO_ENV=dev go run main.go

使用配置文件:config.dev.yaml

2. 生产环境

GO_ENV=production go run main.go
# 或
GO_ENV=prod go run main.go

使用配置文件:config.prod.yaml

3. 预发布环境

GO_ENV=staging go run main.go
# 或
GO_ENV=stage go run main.go

使用配置文件:config.staging.yaml

4. 测试环境

GO_ENV=test go run main.go

使用配置文件:config.test.yaml

Windows PowerShell 设置环境变量

# 临时设置(仅当前会话)
$env:GO_ENV="production"
go run main.go

# 或一行命令
$env:GO_ENV="production"; go run main.go

Windows CMD 设置环境变量

# 临时设置
set GO_ENV=production
go run main.go

# 或一行命令
set GO_ENV=production && go run main.go

Linux/Mac 设置环境变量

# 临时设置
export GO_ENV=production
go run main.go

# 或一行命令
GO_ENV=production go run main.go

环境变量覆盖

敏感配置项可以通过环境变量覆盖,优先级高于配置文件:

  • DB_PASSWORD - 数据库密码
  • JWT_SECRET - JWT 密钥
  • REDIS_PASSWORD - Redis 密码

示例:

# 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.yamlconfig.yaml
  2. 修改 config.yaml 中的配置项
  3. 运行应用
# 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 建议

# 配置文件
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

确认配置加载正确后再继续使用。