环境变量配置文档
概述
君鸿卡管系统使用嵌入式配置机制,默认配置编译在二进制文件中,通过环境变量进行覆盖。
环境变量前缀: JUNHONG_
格式规则: 配置路径中的 . 替换为 _,全部大写
必填配置
以下配置没有合理的默认值,必须通过环境变量设置:
数据库配置
| 环境变量 |
说明 |
示例 |
JUNHONG_DATABASE_HOST |
数据库主机地址 |
localhost |
JUNHONG_DATABASE_PORT |
数据库端口 |
5432 |
JUNHONG_DATABASE_USER |
数据库用户名 |
postgres |
JUNHONG_DATABASE_PASSWORD |
数据库密码 |
your_password |
JUNHONG_DATABASE_DBNAME |
数据库名称 |
junhong_cmp |
Redis 配置
| 环境变量 |
说明 |
示例 |
JUNHONG_REDIS_ADDRESS |
Redis 主机地址 |
localhost |
JWT 配置
| 环境变量 |
说明 |
示例 |
JUNHONG_JWT_SECRET_KEY |
JWT 签名密钥(生产环境必须修改) |
your-secret-key |
微信配置
微信公众号
| 环境变量 |
说明 |
示例 |
JUNHONG_WECHAT_OFFICIAL_ACCOUNT_APP_ID |
公众号 AppID(必填) |
wxabcdef1234567890 |
JUNHONG_WECHAT_OFFICIAL_ACCOUNT_APP_SECRET |
公众号 AppSecret(必填) |
abcdef1234567890 |
JUNHONG_WECHAT_OFFICIAL_ACCOUNT_TOKEN |
服务器配置Token(可选) |
your_token |
JUNHONG_WECHAT_OFFICIAL_ACCOUNT_AES_KEY |
消息加解密Key(可选) |
`` |
JUNHONG_WECHAT_OFFICIAL_ACCOUNT_OAUTH_REDIRECT_URL |
OAuth回调URL(可选) |
https://your-domain.com/callback |
微信支付
| 环境变量 |
说明 |
示例 |
JUNHONG_WECHAT_PAYMENT_APP_ID |
支付 AppID(必填,通常与公众号相同) |
wxabcdef1234567890 |
JUNHONG_WECHAT_PAYMENT_MCH_ID |
商户号(必填) |
1234567890 |
JUNHONG_WECHAT_PAYMENT_API_V3_KEY |
APIv3 密钥(必填,32位字符串) |
your_apiv3_key_32_chars_here |
JUNHONG_WECHAT_PAYMENT_API_V2_KEY |
APIv2 密钥(可选,部分接口需要) |
`` |
JUNHONG_WECHAT_PAYMENT_CERT_PATH |
商户证书路径(必填) |
/app/certs/apiclient_cert.pem |
JUNHONG_WECHAT_PAYMENT_KEY_PATH |
商户私钥路径(必填) |
/app/certs/apiclient_key.pem |
JUNHONG_WECHAT_PAYMENT_SERIAL_NO |
证书序列号(必填) |
1234567890ABCDEF |
JUNHONG_WECHAT_PAYMENT_NOTIFY_URL |
支付回调URL(必填) |
https://api.your-domain.com/api/callback/wechat-pay |
JUNHONG_WECHAT_PAYMENT_HTTP_DEBUG |
HTTP调试日志(可选) |
false |
JUNHONG_WECHAT_PAYMENT_TIMEOUT |
HTTP请求超时(可选) |
30s |
配置说明:
- 微信公众号和支付配置缺失时,服务启动会失败(FATAL 错误)
- 证书文件必须可读(权限 600 或 644)
- APIv3 密钥必须是 32 位字符串
- 证书序列号可通过
openssl x509 -in apiclient_cert.pem -noout -serial 获取
- 详细配置指南参见 微信集成使用指南
可选配置
以下配置有合理的默认值,可按需覆盖:
服务器配置
| 环境变量 |
默认值 |
说明 |
JUNHONG_SERVER_ADDRESS |
:3000 |
服务监听地址 |
JUNHONG_SERVER_READ_TIMEOUT |
30s |
读取超时时间 |
JUNHONG_SERVER_WRITE_TIMEOUT |
30s |
写入超时时间 |
JUNHONG_SERVER_SHUTDOWN_TIMEOUT |
30s |
优雅关闭超时 |
JUNHONG_SERVER_PREFORK |
false |
是否启用预分叉模式 |
数据库连接池
| 环境变量 |
默认值 |
说明 |
JUNHONG_DATABASE_SSLMODE |
disable |
SSL 模式 |
JUNHONG_DATABASE_MAX_OPEN_CONNS |
25 |
最大打开连接数 |
JUNHONG_DATABASE_MAX_IDLE_CONNS |
10 |
最大空闲连接数 |
JUNHONG_DATABASE_CONN_MAX_LIFETIME |
1h |
连接最大生命周期 |
Redis 配置
| 环境变量 |
默认值 |
说明 |
JUNHONG_REDIS_PORT |
6379 |
Redis 端口 |
JUNHONG_REDIS_PASSWORD |
"" |
Redis 密码 |
JUNHONG_REDIS_DB |
0 |
Redis 数据库编号 |
JUNHONG_REDIS_POOL_SIZE |
100 |
连接池大小 |
JUNHONG_REDIS_MIN_IDLE_CONNS |
10 |
最小空闲连接数 |
JUNHONG_REDIS_DIAL_TIMEOUT |
5s |
连接超时 |
JUNHONG_REDIS_READ_TIMEOUT |
3s |
读取超时 |
JUNHONG_REDIS_WRITE_TIMEOUT |
3s |
写入超时 |
日志配置
| 环境变量 |
默认值 |
说明 |
JUNHONG_LOGGING_LEVEL |
info |
日志级别 (debug/info/warn/error) |
JUNHONG_LOGGING_DEVELOPMENT |
false |
开发模式(启用彩色输出) |
JUNHONG_LOGGING_APP_LOG_FILENAME |
logs/app.log |
应用日志文件路径 |
JUNHONG_LOGGING_APP_LOG_MAX_SIZE |
100 |
日志文件最大大小 (MB) |
JUNHONG_LOGGING_APP_LOG_MAX_BACKUPS |
7 |
最大备份文件数 |
JUNHONG_LOGGING_APP_LOG_MAX_AGE |
30 |
日志保留天数 |
JUNHONG_LOGGING_APP_LOG_COMPRESS |
true |
是否压缩旧日志 |
JUNHONG_LOGGING_ACCESS_LOG_FILENAME |
logs/access.log |
访问日志文件路径 |
JWT 配置
| 环境变量 |
默认值 |
说明 |
JUNHONG_JWT_TOKEN_DURATION |
24h |
Token 有效期 |
JUNHONG_JWT_ACCESS_TOKEN_TTL |
24h |
Access Token TTL |
JUNHONG_JWT_REFRESH_TOKEN_TTL |
168h |
Refresh Token TTL (7天) |
队列配置
| 环境变量 |
默认值 |
说明 |
JUNHONG_QUEUE_CONCURRENCY |
10 |
并发 Worker 数量 |
JUNHONG_QUEUE_RETRY_MAX |
3 |
最大重试次数 |
JUNHONG_QUEUE_TIMEOUT |
30m |
任务超时时间 |
限流中间件
| 环境变量 |
默认值 |
说明 |
JUNHONG_MIDDLEWARE_ENABLE_RATE_LIMITER |
false |
启用限流 |
JUNHONG_MIDDLEWARE_RATE_LIMITER_MAX |
100 |
最大请求数 |
JUNHONG_MIDDLEWARE_RATE_LIMITER_EXPIRATION |
1m |
时间窗口 |
JUNHONG_MIDDLEWARE_RATE_LIMITER_STORAGE |
memory |
存储后端 (memory/redis) |
对象存储配置
| 环境变量 |
默认值 |
说明 |
JUNHONG_STORAGE_PROVIDER |
"" |
存储提供商 (s3) |
JUNHONG_STORAGE_TEMP_DIR |
/tmp/junhong |
临时文件目录 |
JUNHONG_STORAGE_S3_ENDPOINT |
"" |
S3 端点 |
JUNHONG_STORAGE_S3_REGION |
"" |
S3 区域 |
JUNHONG_STORAGE_S3_BUCKET |
"" |
S3 存储桶 |
JUNHONG_STORAGE_S3_ACCESS_KEY_ID |
"" |
S3 访问密钥 ID |
JUNHONG_STORAGE_S3_SECRET_ACCESS_KEY |
"" |
S3 访问密钥 |
JUNHONG_STORAGE_S3_USE_SSL |
true |
是否使用 SSL |
JUNHONG_STORAGE_S3_PATH_STYLE |
true |
是否使用路径风格 |
JUNHONG_STORAGE_PRESIGN_UPLOAD_EXPIRES |
1h |
预签名上传 URL 有效期 |
JUNHONG_STORAGE_PRESIGN_DOWNLOAD_EXPIRES |
1h |
预签名下载 URL 有效期 |
短信配置
| 环境变量 |
默认值 |
说明 |
JUNHONG_SMS_GATEWAY_URL |
"" |
短信网关 URL |
JUNHONG_SMS_USERNAME |
"" |
短信账号 |
JUNHONG_SMS_PASSWORD |
"" |
短信密码 |
JUNHONG_SMS_SIGNATURE |
"" |
短信签名 |
JUNHONG_SMS_TIMEOUT |
10s |
请求超时 |
默认管理员
| 环境变量 |
默认值 |
说明 |
JUNHONG_DEFAULT_ADMIN_USERNAME |
admin |
默认管理员用户名 |
JUNHONG_DEFAULT_ADMIN_PASSWORD |
Admin@123456 |
默认管理员密码 |
JUNHONG_DEFAULT_ADMIN_PHONE |
13800000000 |
默认管理员手机号 |
Docker Compose 示例
本地开发
本地开发可以创建 .env 文件(不要提交到 Git):
然后使用 source .env 加载环境变量后运行: