如何使用 Travis CI 和 Azure 在持续部署管道中设置 flyway 配置?
How to set flyway config in continuous deployment pipeline using Travis CI and Azure?
我正在使用 flyway 在 NodeJS 应用程序中进行数据库迁移。
通过 Travis CI 构建应用程序的 docker 映像,并将其推送到 Azure 容器注册表。从那里,网络挂钩获取图像并在 Azure 应用程序服务中启动容器实例。
我很难通过环境。 flyway migrate cli 命令的特定数据库连接配置。
在应用程序服务中添加了连接详细信息作为应用程序设置,但没有传递给 docker 运行 命令。虽然,设置似乎在应用程序启动后可用。
无法使用 Travis CI 环境。变量,因为连接细节因环境而异。
寻求帮助,如果有人解决了类似的问题。
我找到了解决这个问题的方法。思想将 post 解决方案,因为其他人可能会发现它有帮助。
首先,我需要有环境。具体的数据库连接细节:
为此,我在 Azure 应用服务中配置了参数,并在 TravisCI 构建脚本中使用 CLI 命令检索了它。
其次,我需要将数据库配置作为环境变量传递给 docker 容器。由于 Azure 应用服务不允许我们更改 docker run
命令,因此我们无法在启动 docker 容器时传递显式环境配置。
所以为了克服这个限制,
我为 docker 构建命令设置了构建参数(参见 set build time variables)以传递 env。 docker 构建的特定数据库连接详细信息。
由于构建参数不会保存到最终构建映像中,我不得不使用 ENV
命令将它们转换为环境变量。参见 setting docker environment variables。
现在数据库连接参数可以作为环境使用。 docker 启动时的配置。因此,docker 上的 flyway migrate
命令启动时能够毫无问题地连接到数据库。
我正在使用 flyway 在 NodeJS 应用程序中进行数据库迁移。 通过 Travis CI 构建应用程序的 docker 映像,并将其推送到 Azure 容器注册表。从那里,网络挂钩获取图像并在 Azure 应用程序服务中启动容器实例。
我很难通过环境。 flyway migrate cli 命令的特定数据库连接配置。
在应用程序服务中添加了连接详细信息作为应用程序设置,但没有传递给 docker 运行 命令。虽然,设置似乎在应用程序启动后可用。
无法使用 Travis CI 环境。变量,因为连接细节因环境而异。
寻求帮助,如果有人解决了类似的问题。
我找到了解决这个问题的方法。思想将 post 解决方案,因为其他人可能会发现它有帮助。
首先,我需要有环境。具体的数据库连接细节: 为此,我在 Azure 应用服务中配置了参数,并在 TravisCI 构建脚本中使用 CLI 命令检索了它。
其次,我需要将数据库配置作为环境变量传递给 docker 容器。由于 Azure 应用服务不允许我们更改 docker run
命令,因此我们无法在启动 docker 容器时传递显式环境配置。
所以为了克服这个限制,
我为 docker 构建命令设置了构建参数(参见 set build time variables)以传递 env。 docker 构建的特定数据库连接详细信息。
由于构建参数不会保存到最终构建映像中,我不得不使用 ENV
命令将它们转换为环境变量。参见 setting docker environment variables。
现在数据库连接参数可以作为环境使用。 docker 启动时的配置。因此,docker 上的 flyway migrate
命令启动时能够毫无问题地连接到数据库。