6.3 KiB
6.3 KiB
环境配置概览
本项目支持多个环境配置,适用于不同的开发和部署场景。
📋 环境列表
开发与测试环境
| 环境 | 标识 | 配置文件 | 用途 |
|---|---|---|---|
| 开发环境 | development / dev |
config.dev.yaml |
本地开发 |
| 测试环境 | test / testing |
config.test.yaml |
功能测试 |
生产环境
| 环境 | 标识 | 配置文件 | 地域 | 用户群 |
|---|---|---|---|---|
| 生产-通用 | production / prod |
config.prod.yaml |
通用 | 全球 |
| 生产-中国 | production-cn / prod-cn |
config.prod-cn.yaml |
中国 | 中国大陆用户 |
| 生产-美国 | production-us / prod-us |
config.prod-us.yaml |
美国 | 北美用户 |
| 生产-欧洲 | production-eu / prod-eu |
config.prod-eu.yaml |
欧洲 | 欧洲用户 |
🚀 快速开始
后端启动
使用脚本(推荐)
# Windows
.\start-multi-env.bat
# Linux/Mac
chmod +x start-multi-env.sh
./start-multi-env.sh
使用 Makefile
make run-dev # 开发环境
make run-test # 测试环境
make run-prod-cn # 中国区生产
make run-prod-us # 美国区生产
make run-prod-eu # 欧洲区生产
直接运行
# Windows PowerShell
$env:GO_ENV="prod-cn"; go run cmd/server/main.go
# Linux/Mac
GO_ENV=prod-cn go run cmd/server/main.go
前端配置
编辑 miniprogram/config/index.js:
// 修改 CURRENT_ENV 变量
const CURRENT_ENV = 'production-cn'; // 或其他环境
🌍 各区域配置对比
服务器配置
| 配置项 | 中国区 | 美国区 | 欧洲区 |
|---|---|---|---|
| API域名 | api-cn.your-domain.com | api-us.your-domain.com | api-eu.your-domain.com |
| 端口 | 8060 | 8060 | 8060 |
| 模式 | release | release | release |
数据库配置
| 配置项 | 中国区 | 美国区 | 欧洲区 |
|---|---|---|---|
| 主机 | 8.149.233.36 | us-db.your-domain.com | eu-db.your-domain.com |
| 用户 | ai_dianshang | ai_dianshang_us | ai_dianshang_eu |
| 数据库 | ai_dianshang | ai_dianshang | ai_dianshang |
存储配置 (OSS)
| 配置项 | 中国区 | 美国区 | 欧洲区 |
|---|---|---|---|
| Endpoint | oss-cn-beijing.aliyuncs.com | oss-us-west-1.aliyuncs.com | oss-eu-central-1.aliyuncs.com |
| Bucket | bxmkb-beijing | your-us-bucket | your-eu-bucket |
| 地域 | 北京 | 美国西部 | 欧洲中部 |
📁 文件结构
dianshang/
├── server/
│ ├── configs/
│ │ ├── config.dev.yaml # 开发环境
│ │ ├── config.test.yaml # 测试环境
│ │ ├── config.prod.yaml # 生产-通用
│ │ ├── config.prod-cn.yaml # 生产-中国
│ │ ├── config.prod-us.yaml # 生产-美国
│ │ └── config.prod-eu.yaml # 生产-欧洲
│ ├── internal/config/config.go # 配置加载逻辑
│ ├── 多环境配置说明.md # 详细文档
│ └── docker-compose-multi-env.md # Docker部署文档
├── miniprogram/
│ ├── config/index.js # 前端环境配置
│ └── utils/env-switcher.js # 环境切换工具
├── start-multi-env.sh # Linux/Mac启动脚本
├── start-multi-env.bat # Windows启动脚本
└── Makefile # Make命令集
🔧 配置管理
环境变量优先级
系统按以下优先级检查环境变量:
GO_ENV(推荐)APP_ENVENVIRONMENT
敏感信息管理
⚠️ 重要: 不要将敏感信息提交到代码仓库
推荐做法:
- 使用环境变量覆盖配置
- 配置文件使用模板(.example)
- 实际配置添加到
.gitignore - 生产环境使用密钥管理服务
配置覆盖
配置可以通过环境变量覆盖,格式:大写_下划线分隔
# 覆盖数据库密码
export DATABASE_PASSWORD=new-password
# 覆盖 JWT 密钥
export JWT_SECRET=new-secret-key
🐳 Docker 部署
中国区
docker run -e GO_ENV=prod-cn \
-p 8060:8060 \
-v $(pwd)/configs:/app/configs \
your-image
美国区
docker run -e GO_ENV=prod-us \
-p 8060:8060 \
-v $(pwd)/configs:/app/configs \
your-image
欧洲区
docker run -e GO_ENV=prod-eu \
-p 8060:8060 \
-v $(pwd)/configs:/app/configs \
your-image
📚 相关文档
- 多环境配置详细说明 - 完整的配置指南
- Docker多环境部署 - Docker和K8s部署
- 基础配置说明 - 配置基础知识
⚙️ 添加新环境
如需添加新的区域(如亚太区),请参考以下步骤:
-
创建配置文件
cp server/configs/config.prod-cn.yaml server/configs/config.prod-ap.yaml -
修改配置内容
- 数据库连接
- API域名
- OSS配置
- 等其他区域特定配置
-
更新代码 - 在
config.go中添加环境映射 -
更新前端 - 在
config/index.js中添加环境配置 -
更新文档 - 更新相关文档
详细步骤参见 多环境配置说明.md
🔍 故障排查
配置文件未加载
检查项:
- 环境变量设置正确
- 配置文件存在于
configs/目录 - 文件名与环境匹配
- YAML语法正确
数据库连接失败
检查项:
- 数据库配置正确
- 网络连接正常
- 防火墙规则
- 数据库用户权限
API调用失败
检查项:
- 前后端环境匹配
- API域名正确
- 服务已启动
- CORS配置
💡 最佳实践
- 本地开发 - 使用
development环境 - 功能测试 - 使用
test环境 - 生产部署 - 根据用户地域选择对应的生产环境
- 配置安全 - 敏感信息使用环境变量或密钥服务
- 环境隔离 - 各环境使用独立的数据库和存储
- 日志管理 - 不同环境使用不同的日志文件
📞 技术支持
如有问题,请查阅: