danial db526ce3ab feat(db-migrate): 初始化声明式数据库迁移项目骨架
- 添加数据库 schema 声明文件 schema.sql,包含多张表的完整结构定义
- 新增 Dockerfile,配置基于 arigaio/atlas 的迁移镜像
- 添加 migrate.sh 脚本执行生产环境迁移操作
- 创建 generate-migration.sh 脚本导出本地数据库 schema
- 新建 test-local.sh 脚本用于本地迁移兼容性测试
- 配置 atlas.hcl 支持本地(local)和生产(prod)两个环境
- 添加 docker-compose.yml 支持基于环境变量的容器化迁移服务
- 新增 .drone.yml 配置自动构建并推送迁移镜像流水线
- 提供 .env.example 和 .env.local 模板方便环境变量管理
- 更新 .gitignore 和 .dockerignore 优化开发与构建忽略规则
- 编写 README.md,详细说明项目架构、使用步骤及注意事项
- 编写 CLAUDE.md,提供代码库整体说明及迁移工作流程指导
2025-12-13 21:32:12 +08:00

Atlas 数据库迁移(声明式)

文件说明

  • atlas.hcl - Atlas 配置文件
  • schema.sql - 数据库 schema 定义(声明式)
  • .env.local - 本地环境配置
  • .env.example - 生产环境配置示例
  • generate-migration.sh - 从本地数据库导出 schema.sql
  • migrate.sh - 生产环境迁移脚本
  • test-local.sh - 本地测试脚本
  • Dockerfile - Docker 镜像配置
  • docker-compose.yml - Docker Compose 配置

使用步骤

1. 导出当前数据库 schema

./generate-migration.sh

2. 本地测试

./test-local.sh

3. 生产环境部署

方式一Docker Compose推荐

# 1. 复制环境变量配置
cp .env.example .env

# 2. 修改 .env 文件,填入生产数据库信息
# DB_USER=root
# DB_PASSWORD=your_password
# DB_HOST=mysql_host
# DB_PORT=3306
# DB_NAME=production_db

# 3. 执行迁移
docker-compose up db-migrate

方式二Docker Run

docker build -t db-migrate:latest .
docker run --rm \
  -e DB_URL="mysql://user:password@host:3306/database" \
  db-migrate:latest

注意事项

  1. 本地测试需修改 .env.local 中的 MYSQL_CONTAINER 为实际容器名称
  2. 生产环境需配置 .env 文件或设置环境变量
  3. 使用声明式迁移schema.sql 是数据库最终状态
  4. Atlas 自动计算并执行差异变更
Description
No description provided
Readme 59 KiB
Languages
HCL 57.6%
Dockerfile 26.7%
Shell 15.7%