我将一个Python Twisted应用程序移植到OpenShift,后者将其数据存储到SQLite数据库中。将数据库文件放入git repo data/
目录后(在第一次部署期间)我没有遇到任何问题,但是在第二次部署时只是重置了数据库。
我搜索了这种奇怪行为的正确解决方案(考虑到数据库处于版本控制之下)然后我找到了the answer in the OpenShift Knowledge Base:
此问题的简短解决方案是将您的SQLite数据库从“数据”目录中的git存储库中保存一层。
现在我的问题是当我将数据库移动到此目录时会发生什么?我是否要移动或复制数据目录的内容?这些数据将从部署到部署?
我尝试将数据库从repo/data
移动到data/
目录,但应用程序无法访问此上级目录。我正在寻找解决这个问题的最佳方案。
答案 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}}
我现在正在测试这种配置,但它看起来像是一种魅力。