redgate/flyway本镜像为 Flyway Command-line 的官方 Docker 镜像,支持 Redgate Flyway 全系列版本(包括社区版、团队版和企业版),并与 Flyway Pipelines 兼容。Flyway Pipelines 可帮助用户集中查看跨项目的数据库部署状态,实现部署记录(已部署内容、时间及位置)的便捷追踪。
*-azure 标签镜像)。运行以下命令验证镜像可用性,将输出 Flyway Command-line 的使用说明:
bashdocker run --rm redgate/flyway
执行具体 Flyway 命令需传入必要参数(如数据库连接信息、许可证密钥)。示例:查看数据库信息:
bashdocker run --rm redgate/flyway -licenseKey="FL01..." -url=jdbc:h2:mem:test -user=sa info
带有 *-azure 标签的镜像(如 redgate/flyway:latest-azure)为适配 Azure Pipelines 代理作业需求,未定义入口点,需显式添加 flyway 命令:
bashdocker run --rm redgate/flyway:latest-azure flyway -url=jdbc:h2:mem:test info
通过挂载以下卷可自定义 Flyway 配置、驱动及迁移文件:
| 卷路径 | 用途 |
|---|---|
/flyway/conf | 存放 配置文件 |
/flyway/drivers | 存放数据库 JDBC 驱动 |
/flyway/sql | 存放 SQL 迁移脚本 |
/flyway/jars | 存放 Java 迁移脚本 |
直接通过命令行传入 Flyway 参数,常用参数包括:
-licenseKey:Flyway 许可证密钥(团队版/企业版必填)-url:数据库 JDBC 连接 URL-user:数据库用户名-password:数据库密码-schemas:目标数据库模式示例:执行迁移命令:
bashdocker run --rm redgate/flyway -licenseKey="FL01..." -url=jdbc:mysql://db:3306/mydb -user=root -password=P@ssw0rd migrate
通过 /flyway/conf 卷挂载配置文件(如 flyway.conf),集中管理参数。配置文件格式示例:
propertiesflyway.url=jdbc:h2:mem:test flyway.user=sa flyway.licenseKey=FL01... flyway.schemas=public
运行时挂载配置文件目录:
bashdocker run --rm -v /absolute/path/to/confdir:/flyway/conf redgate/flyway info
将 SQL 迁移文件(如 V1__Initial.sql)放入本地目录,通过 /flyway/sql 卷挂载:
创建 SQL 文件 V1__Initial.sql:
sqlCREATE TABLE MyTable ( MyColumn VARCHAR(100) NOT NULL );
挂载 SQL 目录并执行迁移:
bashdocker run --rm -v /absolute/path/to/sqldir:/flyway/sql redgate/flyway -url=jdbc:h2:mem:test -user=sa migrate
若默认未包含目标数据库的 JDBC 驱动(可参考 官方文档 确认),或需使用特定版本驱动,可通过 /flyway/drivers 卷挂载:
将驱动 JAR 文件(如 mysql-connector-java-8.0.32.jar)放入本地目录。
挂载驱动目录并运行:
bashdocker run --rm -v /absolute/path/to/driverdir:/flyway/drivers -v /absolute/path/to/sqldir:/flyway/sql redgate/flyway -url=jdbc:mysql://db:3306/mydb -user=root migrate
通过 /flyway/jars 卷挂载包含 Java 迁移类或回调的 JAR 文件:
将 Java 迁移 JAR 文件放入本地目录。
挂载 JAR 目录并执行:
bashdocker run --rm -v /absolute/path/to/jardir:/flyway/jars -v /absolute/path/to/sqldir:/flyway/sql redgate/flyway -url=jdbc:h2:mem:test -user=sa migrate
通过 Flyway Pipelines 可集中追踪迁移结果,需使用 个人访问令牌(PAT)。示例:发布迁移结果至 Flyway Pipelines:
bashdocker run --rm -v /absolute/path/to/sqldir:/flyway/sql -v /absolute/path/to/confdir:/flyway/conf redgate/flyway migrate --publishResults=true --email=<Redgate账户***> -token=<PAT令牌>
通过 docker-compose.yml 可同时启动 Flyway 和目标数据库容器,实现迁移自动化:
yamlversion: '3' services: flyway: image: redgate/flyway # 命令:等待数据库初始化(最多60次重试)后执行迁移 command: -licenseKey="FL01..." -url=jdbc:mysql://db -schemas=myschema -user=root -password=P@ssw0rd -connectRetries=60 migrate volumes: - ./sql:/flyway/sql # 挂载本地SQL迁移文件目录 depends_on: - db # 依赖数据库服务启动 db: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=P@ssw0rd # 数据库root密码 command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # 字符集配置 ports: - 3306:3306 # 暴露数据库端口
启动服务:
bashdocker-compose up
Flyway 将自动等待 MySQL 初始化完成(最多 60 秒),随后执行迁移。




manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务