Skip to content

快速入门

Go DDD Template 是一个基于领域驱动设计(DDD)和 CQRS 模式的企业级应用模板。

Table of Contents

核心价值

  • 架构清晰: DDD 四层架构 + CQRS 模式
  • 开发高效: Task 任务自动化、热重载
  • 质量保证: 完整的测试策略和代码规范
  • 生产就绪: Docker 容器化、健康检查

环境要求

  • Go 1.25.4+
  • Docker 和 Docker Compose
  • Task(可选,用于任务自动化)

安装步骤

bash
# 1. 克隆项目
git clone https://github.com/lwmacct/251117-go-ddd-template.git
cd 251117-go-ddd-template

# 2. 启动依赖服务
docker-compose up -d

# 3. 数据库迁移
go run main.go migrate up

# 4. 填充种子数据(可选)
go run main.go seed

# 5. 运行应用
task go:run -- api
# 或使用热重载: air

验证安装

bash
# 健康检查
curl http://localhost:8080/health

# 登录获取 Token
curl -X POST http://localhost:8080/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"login": "admin", "password": "password123"}'

预置账号: admin / password123

项目结构

251117-go-ddd-template/
├── internal/               # 核心业务代码
│   ├── adapters/          # 适配器层
│   ├── application/       # 应用层
│   ├── domain/            # 领域层
│   ├── infrastructure/    # 基础设施层
│   └── bootstrap/         # 依赖注入
├── src/                   # 前端源代码(Vue 3)
├── docs/                  # 项目文档(VitePress)
├── configs/               # 配置文件
└── main.go                # 应用入口

配置管理

配置按以下优先级加载(高到低):

  1. 命令行参数
  2. 环境变量(APP_ 前缀)
  3. 配置文件(config.yaml
  4. 默认值

核心配置项

配置环境变量说明
server.addrAPP_SERVER_ADDR服务监听地址
data.pgsql_urlAPP_DATA_PGSQL_URLPostgreSQL 连接
data.redis_urlAPP_DATA_REDIS_URLRedis 连接
jwt.secretAPP_JWT_SECRETJWT 签名密钥

CLI 命令

bash
./251117-go-ddd-template api           # 启动 HTTP 服务
./251117-go-ddd-template migrate up    # 执行迁移
./251117-go-ddd-template migrate down  # 回滚迁移
./251117-go-ddd-template seed          # 填充种子数据
./251117-go-ddd-template worker        # 启动后台任务

使用 Task:

bash
task go:run -- api
task go:run -- migrate up
task go:build

开发工具配置

工具配置文件说明
Air.air.toml热重载
TaskTaskfile.yml任务自动化
Pre-commit.pre-commit-config.yaml提交检查

生产部署

Docker

bash
docker build -t go-ddd-template .
docker run -e APP_SERVER_ENV=production \
  -e APP_DATA_PGSQL_URL=... \
  -e APP_JWT_SECRET=... \
  go-ddd-template

安全建议

  • 使用环境变量或密钥管理系统存储敏感信息
  • 数据库使用 SSL/TLS 连接
  • JWT secret 至少 32 字节随机字符串
  • 定期轮换密钥

下一步

基于 DDD + CQRS 架构的企业级应用模板