danial 3a571d576c feat(docker): 使迁移脚本具有执行权限并设置为入口点
- 在 Dockerfile 中添加对 migrate.sh 脚本的执行权限设置
- 将 migrate.sh 脚本设为容器启动的入口点
- 删除 atlas.hcl 文件中无用的 dev 环境配置项

chore(docker): 更换基础镜像并简化迁移流程

- 将基础镜像从 arigaio/atlas:latest 修改为更轻量的 latest-alpine
- 删除 migrate.sh 脚本,改用 atlas 命令直接进行数据库迁移
- 优化 Dockerfile 入口点,移除对外部脚本的依赖
- 简化镜像构建和运行流程,提高构建效率和镜像体积优化

chore(docker): 更新基础镜像版本为 latest

- 将基础镜像从 arigaio/atlas:latest-alpine 更改为 arigaio/atlas:latest
- 可能包含非alpine版本的更多功能或优化
- 保持工作目录设置不变
- 减少了潜在的依赖冲突风险

refactor(docker): 优化Dockerfile和docker-compose配置以支持测试环境

- 修改Dockerfile的ENTRYPOINT,简化启动命令
- 新增docker-compose.test.yml,配置测试用MySQL服务及数据库迁移流程
- 在docker-compose.yml中调整db-migrate服务启动参数,支持动态环境变量数据库连接
- 通过依赖和健康检查确保测试数据库在迁移前可用
- 增加测试数据库和开发数据库的自动创建和迁移功能

fix(docker): 修复开发环境数据库连接字符串配置

- 修改了 docker-compose.yml 中开发环境数据库的连接参数
- 使用了新的环境变量 DB_USER_DEV、DB_PASSWORD_DEV 和 DB_NAME_DEV
- 修正了数据库 URL 拼接格式,确保连接正确
- 删除了冗余或者错误的参数设置
- 保持其他配置不变,防止影响运行机制

chore(docker): 优化 Docker 镜像和 docker-compose 配置

- 切换基础镜像为更轻量的 alpine 版本
- 设置工作目录为 /app,方便挂载迁移目录
- 修改 ENTRYPOINT 指向正确的 atlas 可执行文件路径
- 在 docker-compose.yml 中添加重启策略为 no
- 使用环境变量简化数据库连接字符串配置
- 调整命令行参数格式,提升可读性和维护性

fix(docker): 修正基础镜像和入口点路径

- 将基础镜像从alpine版本更改为latest版本
- 修改ENTRYPOINT路径以匹配新的镜像结构
- 保持工作目录和文件复制配置不变

chore(docker): 切换基础镜像为alpine版本

- 将基础镜像从arigaio/atlas:latest更改为arigaio/atlas:latest-alpine
- 使用轻量级alpine版本以减少镜像体积
- 保持工作目录设置不变,确保迁移目录挂载位置正确

chore(migration): 删除本地测试脚本并优化docker-compose配置

- 删除了用于本地数据库迁移测试的test-local.sh脚本文件
- 简化并优化docker-compose.yml中db-migrate服务的命令格式
- 移除.env.local中的无用MySQL容器名称配置注释和变量声明
2025-12-13 23:44:33 +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%