【问题标题】:How do I run Flyway Migrations on Heroku?如何在 Heroku 上运行 Flyway 迁移?
【发布时间】:2015-09-21 16:34:08
【问题描述】:

我正在使用FlywayDB 进行 Maven Java 项目的迁移。我目前正在努力使部署到 Heroku 成为可能。

在我的本地机器上,我使用 Maven Flyway 插件来运行迁移:

$> mvn clean compile flyway:migrate

要在 heroku 上做同样的事情,我通常会尝试:

$> heroku run mvn flyway:migrate

但是,mvn 在构建阶段之后不可用,因此会产生错误 (mvn: command not found)

如何在 Heroku 上运行我的 flyway 迁移?

【问题讨论】:

    标签: java maven heroku flyway


    【解决方案1】:

    我认为最好的办法是在您的应用程序中创建一个使用 FlywayDB Java API 的小类。它可能看起来像这样:

    class Migrator {
      public static void main(String[] args) throws Exception {
        ...
        Flyway flyway = new Flyway();
        flyway.setDataSource(url, user, password);
        flyway.migrate();
      }
    }
    

    然后在您的Procfile 中创建一个条目,如下所示:

    migrate: java -cp target/classes:target/dependency/* Migrator
    

    最后根据需要使用heroku run migrate 运行它。

    Heroku 不将 Maven 包含在 slug 中的原因(即在运行时)是因为未保留 .m2 目录。如果包含 Maven,然后您运行 mvn 命令,它首先必须下载互联网。不保留 .m2 目录,因为它会使 slug 太大。

    【讨论】:

    • “它首先必须下载互联网”
    • 或者您可以简单地在应用程序启动时运行迁移 :-)
    【解决方案2】:

    根据Heroku documentation,不建议使用 Maven 插件来运行 Flyway 迁移。

    在文档中有两种选择:

    【讨论】:

      猜你喜欢
      • 2017-08-16
      • 2016-12-12
      • 2012-07-23
      • 2020-06-28
      • 1970-01-01
      • 2020-08-17
      • 2012-10-27
      • 1970-01-01
      • 2020-01-20
      相关资源
      最近更新 更多