竹简文档
初始化

配置初始化

ConfigInit 从 .env 文件加载环境变量

配置初始化

ConfigInit 方法从 .env 文件加载环境变量到系统环境中。

ConfigInit

register_config.go
func (r *Reg) ConfigInit()

实现:

register_config.go
func (r *Reg) ConfigInit() {
    // 加载 .env 文件到环境变量(忽略不存在的错误)
    _ = godotenv.Load()
}

配置文件

在项目根目录创建 .env 文件:

.env
# 调试模式
XLF_DEBUG=true

# 雪花算法配置
SNOWFLAKE_DATACENTER_ID=1
SNOWFLAKE_NODE_ID=1

# 服务配置
XLF_PORT=8080

读取配置

使用 xEnv 包读取环境变量:

import xEnv "github.com/bamboo-services/bamboo-base-go/defined/env"

// 读取布尔值
debug := xEnv.GetEnvBool(xEnv.Debug, false)

// 读取字符串
port := xEnv.GetEnvString("SERVER_PORT", "8080")

// 读取整数
nodeID := xEnv.GetEnvInt("SNOWFLAKE_NODE_ID", 1)

预定义环境变量

系统配置

变量名类型默认值说明
XLF_DEBUGboolfalse调试模式开关
XLF_HOSTstringlocalhostHTTP 监听地址
XLF_PORTint1118HTTP 监听端口
GRPC_PORTint1119gRPC 监听端口
GRPC_REFLECTIONboolfalsegRPC 反射开关

数据库配置

变量名类型默认值说明
DATABASE_DRIVERstringnone数据库驱动(mysql / postgres / sqlite / oracle / sqlserver / none),v1.2.0 起需配合导入对应驱动插件
DATABASE_DSNstring-数据库完整连接串(设置后忽略下方分项配置)
DATABASE_HOSTstringlocalhost数据库主机
DATABASE_PORTint5432数据库端口
DATABASE_USERstring-数据库用户名
DATABASE_PASSstring-数据库密码
DATABASE_NAMEstring-数据库名称
DATABASE_CHARSETstringutf8mb4字符集
DATABASE_TIMEZONEstringAsia/Shanghai时区
DATABASE_PREFIXstring-表前缀
DATABASE_PATHstring-SQLite 数据库文件路径(仅 sqlite 驱动有效)
DATABASE_SERVICE_NAMEstring-Oracle 服务名(仅 oracle 驱动有效)
DATABASE_LIB_DIRstring-Oracle Instant Client 目录(macOS/Windows 有效,Linux 用 ldconfig 配置)

v1.2.0 起DATABASE_DRIVER 不再由框架内置驱动实现,业务端需安装并空白导入对应驱动插件(如 _ "…/plugins/database/mysql"),否则启动阶段报「不支持的数据库驱动」。详见 声明式配置

Redis 配置

变量名类型默认值说明
NOSQL_DRIVERstringnone缓存后端(redis / memory / none)
NOSQL_HOSTstringlocalhostRedis 主机
NOSQL_PORTint6379Redis 端口
NOSQL_USERstring-Redis 用户名(ACL 模式)
NOSQL_PASSstring-Redis 密码
NOSQL_DATABASEint0Redis 数据库索引
NOSQL_POOL_SIZEint10连接池大小
NOSQL_PREFIXstring-键前缀
NOSQL_MEMORY_DEFAULT_TTLstring0memory 后端默认过期时间(Go Duration,如 30m/1h,0=永不过期)
NOSQL_MEMORY_MAX_ENTRIESint0memory 后端最大条目数(0=无上限)
NOSQL_MEMORY_SHARD_COUNTint0memory 后端分片数(0=默认分片)

雪花算法配置

变量名类型默认值说明
SNOWFLAKE_DATACENTER_IDint自动生成数据中心 ID (0-31)
SNOWFLAKE_NODE_IDint自动生成节点 ID (0-31)

日志配置

变量名类型默认值说明
LOG_LEVELstringinfo日志级别
LOG_PATHstring./logs日志目录
LOG_MAX_SIZEint100单文件最大尺寸 (MB)
LOG_MAX_AGEint30文件保留天数
LOG_MAX_BACKUPSint10最大备份文件数
LOG_COMPRESSbooltrue是否压缩归档

运行环境配置

变量名类型默认值说明
ENVstringdevelopment运行环境
APP_NAMEstring-应用名称
APP_VERSIONstring-应用版本
TIMEZONEstringAsia/Shanghai系统时区

注意事项

  • .env 文件不存在时不会报错,会静默忽略
  • 环境变量优先级:系统环境变量 > .env 文件
  • 建议将 .env 添加到 .gitignore,避免敏感信息泄露

下一步

On this page