Skip to content

环境变量

VEF Framework 支持通过环境变量覆盖配置文件中的设置。

环境变量命名规则

环境变量使用 VEF_ 前缀,配置路径用下划线分隔,全部大写:

配置路径: database.host
环境变量: VEF_DATABASE_HOST

常用环境变量

应用配置

环境变量配置路径说明
VEF_APP_NAMEapp.name应用名称
VEF_APP_ENVapp.env运行环境
VEF_APP_DEBUGapp.debug调试模式

服务器配置

环境变量配置路径说明
VEF_SERVER_HOSTserver.host监听地址
VEF_SERVER_PORTserver.port监听端口

数据库配置

环境变量配置路径说明
VEF_DATABASE_HOSTdatabase.host数据库主机
VEF_DATABASE_PORTdatabase.port数据库端口
VEF_DATABASE_DATABASEdatabase.database数据库名
VEF_DATABASE_USERNAMEdatabase.username用户名
VEF_DATABASE_PASSWORDdatabase.password密码

Redis 配置

环境变量配置路径说明
VEF_REDIS_HOSTredis.hostRedis 主机
VEF_REDIS_PORTredis.portRedis 端口
VEF_REDIS_PASSWORDredis.passwordRedis 密码

JWT 配置

环境变量配置路径说明
VEF_AUTH_JWT_SECRETauth.jwt.secretJWT 密钥
VEF_AUTH_JWT_EXPIRATIONauth.jwt.expirationToken 过期时间

使用示例

Docker 环境

dockerfile
FROM golang:1.21-alpine

ENV VEF_APP_ENV=production
ENV VEF_DATABASE_HOST=db
ENV VEF_DATABASE_PASSWORD=secret
ENV VEF_REDIS_HOST=redis

COPY . /app
WORKDIR /app
RUN go build -o main .

CMD ["./main"]

Docker Compose

yaml
version: '3.8'
services:
  app:
    build: .
    environment:
      - VEF_APP_ENV=production
      - VEF_DATABASE_HOST=db
      - VEF_DATABASE_PASSWORD=${DB_PASSWORD}
      - VEF_REDIS_HOST=redis
      - VEF_AUTH_JWT_SECRET=${JWT_SECRET}
    depends_on:
      - db
      - redis

  db:
    image: mysql:8.0
    environment:
      - MYSQL_ROOT_PASSWORD=${DB_PASSWORD}
      - MYSQL_DATABASE=myapp

  redis:
    image: redis:7-alpine

Kubernetes

yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  VEF_APP_ENV: "production"
  VEF_DATABASE_HOST: "mysql-service"
  VEF_REDIS_HOST: "redis-service"
---
apiVersion: v1
kind: Secret
metadata:
  name: app-secrets
type: Opaque
stringData:
  VEF_DATABASE_PASSWORD: "your-db-password"
  VEF_AUTH_JWT_SECRET: "your-jwt-secret"
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app
spec:
  template:
    spec:
      containers:
        - name: app
          envFrom:
            - configMapRef:
                name: app-config
            - secretRef:
                name: app-secrets

优先级

配置加载优先级(从低到高):

  1. 默认配置 (config.yaml)
  2. 环境特定配置 (config.{env}.yaml)
  3. 环境变量
go
// Example: database.host resolution
// 1. config.yaml: database.host = "localhost"
// 2. config.prod.yaml: database.host = "db.internal"
// 3. VEF_DATABASE_HOST = "db.cluster.local"
// Final value: "db.cluster.local"

下一步

基于 Apache License 2.0 许可发布