- 将声明式 schema.sql 改为期望状态定义 - 新增 migrations/ 目录存放版本化迁移文件 - 更新 atlas.hcl 配置支持版本化迁移路径 - 修改生成迁移脚本 generate-migration.sh 实现差异迁移文件生成 - Dockerfile 支持拷贝 migrations 目录 - docker-compose.yml 调整命令,使用迁移文件夹路径 - 优化 README 文档描述版本化迁移及使用步骤 - 移除无用测试数据库docker-compose.test.yml文件 - 添加初始的 baseline 迁移 SQL 文件,包含完整表结构创建语句
1.5 KiB
1.5 KiB
Atlas 数据库迁移(版本化)
文件说明
atlas.hcl- Atlas 配置文件schema.sql- 数据库 schema 定义(期望状态)migrations/- 版本化迁移文件目录.env.local- 本地环境配置.env.example- 生产环境配置示例generate-migration.sh- 生成新的迁移文件Dockerfile- Docker 镜像配置docker-compose.yml- Docker Compose 配置
使用步骤
1. 修改 schema.sql 定义期望状态
直接编辑 schema.sql 文件,定义期望的数据库结构。
2. 生成迁移文件
./generate-migration.sh
此命令会对比当前数据库和 schema.sql,生成新的迁移文件到 migrations/ 目录。
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 migrate apply --url $DB_URL --dir file://migrations
注意事项
- 使用版本化迁移,每次修改 schema.sql 后需运行
generate-migration.sh生成迁移文件 - 迁移文件会按顺序执行,确保数据库状态可追溯
- 生产环境需配置
.env文件或设置环境变量