如何在部署到OpenShift后保留SQLite数据库不被还原?

时间:2014-02-09 12:16:11

标签: python sqlite openshift

我将一个Python Twisted应用程序移植到OpenShift,后者将其数据存储到SQLite数据库中。将数据库文件放入git repo data/目录后(在第一次部署期间)我没有遇到任何问题,但是在第二次部署时只是重置了数据库。

我搜索了这种奇怪行为的正确解决方案(考虑到数据库处于版本控制之下)然后我找到了the answer in the OpenShift Knowledge Base

  

此问题的简短解决方案是将您的SQLite数据库从“数据”目录中的git存储库中保存一层

现在我的问题是当我将数据库移动到此目录时会发生什么?我是否要移动或复制数据目录的内容?这些数据将从部署到部署?

我尝试将数据库从repo/data移动到data/目录,但应用程序无法访问此上级目录。我正在寻找解决这个问题的最佳方案。

1 个答案:

答案 0 :(得分:2)

我通过将应用程序数据分为两类来找到解决方案:

  • 有状态数据
  • 动态数据

我将有状态信息保留在repo/data目录中,并将更改的数据永久移动到上一级data/目录。进行此更改后,我可以在git repo中通过版本控制维护stateful_data,通过以下方式访问它们:

 __location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))
 static_data_folder = __location__ + '/data/'

然后将动态生成的数据移动到$OPENSHIFT_DATA_DIR,该app-root不受版本控制,并且对应于我self.mutable_data_path = os.environ['OPENSHIFT_DATA_DIR'] + "mutable_data_subdir/" 的上级目录。我在单件配置模块中更改了我的getter以返回此可变数据文件夹

{{1}}

我现在正在测试这种配置,但它看起来像是一种魅力。