从heroku中提取实时代码



如何获得从实时到回购的更改?heroku应用程序上运行的文件已经更改,现在如果我推送这些文件,这些文件将被覆盖。

我的php代码运行在heroku上,并将"数据库"内容存储在本地文件中。

{
"id":1,
"date":"12/1/2012",
"topImg":"/img/dates/1.jpg"
.....

所以这些东西被存储在一个json对象中,然后被保存。

不要这样做!

本地文件是你的敌人,因为Heroku是一个在多个匿名负载平衡节点上运行应用程序的云应用程序主机。

也许你现在正在运行一个dyno用于开发目的,但如果你想让你的网站上线,你至少需要两个dyno(因为Heroku免费层服务与他们的非免费层服务有质的不同,特别是如果不使用免费dyno,他们会降速,但他们永远不会对非免费dyno这样做)。当您有多个dyno时,使用本地文件进行缓存以外的任何操作都将完全无法管理。

即使你以某种方式永远使用一个dyno,Heroku dyno也不能保证维护它们的本地存储——例如,如果你的dyno所在的机器出现硬件故障,Heroku会毫不犹豫地关闭你的应用程序,删除所有本地存储,然后只加载应用程序代码就重新启动它,因为它不希望您的应用程序使用本地存储进行任何操作。

没有一种支持的方法可以从dyno中获取文件,因为在dyno上存储本地文件从来都不是一个好主意。然而,如果你真的、真的需要这样做,你可以使用heroku run并运行一次性命令,例如,打开一个shell并将文件上传到某个地方。再次强调:不要对任何严重的事情这样做,因为一旦你有多个dynos,就几乎不可能管理它们上的文件。

Totally同意@Andrew的观点。更喜欢使用mongoDB数据库作为heroku的服务:https://addons.heroku.com/catalog/mongolab或者弹性搜索,如果您想在这些文档上添加搜索功能:https://addons.heroku.com/catalog/searchbox.有精心设计的存储json文档的服务,有了这些服务,无论你的dynos是什么,你都可以确保你的数据是持久的。

现在,为了取回你的heroku本地文件,我会做一些类似的事情:

  1. 使用heroku run bash运行heroku bash
  2. 制作scp -pYourPort yourFile(s) userName@yourDestination:/pathToSaveLocaion
  3. 从heroku实例注销

我希望这会对你有所帮助。

最新更新