如何使用Travis CI和Azure在连续部署管道中设置flyway配置?

时间:2019-06-20 20:18:37

标签: azure azure-web-app-service flyway azure-container-service

我正在使用flyway在NodeJS应用程序中进行数据库迁移。 通过Travis CI构建应用程序的docker映像,该映像将推送到Azure容器注册表。从那里开始,一个网络挂钩从azure应用服务中拾取图像并旋转一个容器实例。

我无法通过环境。特定的数据库连接配置以进行flyway migration cli命令。

在应用程序服务中将连接详细信息添加为“应用程序设置”,但这并未传递给docker run命令。虽然,似乎该设置一旦启动就可用于该应用程序。

无法使用Travis CI env。变量,因为连接细节因环境而异。

如果有人解决了类似的问题,则寻求帮助。

1 个答案:

答案 0 :(得分:0)

我找到了解决此问题的方法。 Thought会发布解决方案,因为其他人可能会觉得有帮助。

首先,我需要env。具体的数据库连接详细信息: 为此,我在Azure App Service中配置了参数,并使用TravisCI构建脚本中的CLI命令检索了该参数。

第二,我需要将数据库配置作为环境变量传递给docker容器。由于Azure应用服务不允许我们更改docker run命令,因此在启动Docker容器时无法传递明确的环境配置。

因此,要克服此限制,

我为docker build命令设置了构建参数(请参见set build time variables)以传递环境。到Docker构建的特定数据库连接详细信息。

由于构建参数没有持久化到最终的构建映像中,因此我不得不使用ENV命令将其转换为环境变量。参见setting docker environment variables

现在,数据库连接参数可作为env使用。在docker启动时进行配置。因此,docker上的flyway migrate命令启动后就可以毫无问题地连接到数据库。