如何为Heroku评论应用程序使用不同的数据库?

问题描述 投票:2回答:1

我在Heroku上有一个部署管道,最近开始使用评论应用程序。这意味着我有一个应用程序 - 让我们称之为CI-APP - 这是从主分支创建的。

每次发出拉取请求时,都会创建一个评论应用。我们在项目中使用Django,因此我还将migrate命令添加到项目的release阶段,以便可以自动完成数据库迁移。

今天,一位同事提交了一个拉取请求,其中包含一些数据库更改。问题是迁移已经运行,并且由于审查应用程序似乎使用与他们想要合并的应用程序相同的数据库,因此迁移已应用,现在我的应用程序CI-APP停止工作...因为代码库不再匹配数据库结构。

我搜索了很多关于如何使用完全不同的数据库作为审查应用程序与父应用程序相比,但无济于事(有一些资源提到如何复制数据库内容,但这不是我需要的)。

有什么建议吗?

更新

好吧,所以似乎Heroku确实为评论应用创建了一个新的数据库,但是:评论应用程序从父级复制其所有环境变量,包括DATABASE_URL(这似乎是实际创建评论应用程序的唯一方法: https://s3.amazonaws.com/heroku-devcenter-files/article-images/1461071037-initial_set_up_review_apps.png

我想我可以在postdeploy脚本中做一些黑魔法,但由于数据库生成的url可能是HEROKU_POSTGRESQL_ {color} _URL之类的东西,我不知道如何找到它....

django heroku pipeline
1个回答
-1
投票

为此,请在项目的根目录中创建app.json文件,而不是使用heroku仪表板。在此文件中,您可以指定要从父级继承的环境变量。

来自heroku文档:

"env": { "INHERIT_THIS_CONFIG_VAR": { "required": true }, "DONT_INHERIT_THIS_CONFIG_VAR": "production" },

这允许您指定要用于审阅应用程序的数据库。看一下heroku postgres插件的文档(我假设你使用的是postgres):

作为配置过程的一部分,DATABASE_URL配置变量将添加到您的应用配置中。其中包含您的应用用于访问数据库的URL。

所以database_url配置变量将由adddon创建。您只需将其放在app.json文件中,它就会自动创建。

© www.soinside.com 2019 - 2024. All rights reserved.