【问题标题】:How to Access files on Heroku?如何访问 Heroku 上的文件?
【发布时间】:2012-09-27 14:59:12
【问题描述】:

我有一个关于 Heroku 的项目。这个项目允许我更新一个 JSON 文件。如果通过项目的 Web 界面更新 Heroku 上的某些内容,我会看到更新。我可以关闭浏览器,再次打开它,更新仍然存在。

现在,我想向这个项目推一些东西。如果这样做,JSON 文件将被覆盖。因此,我首先从 heroku 获取当前项目状态。 Heroku 的提示说一切都是最新的,这是不正确的,因为我更改了 JSON 文件。

使用heroku run ls static/json/ 显示更改的文件。我需要在推送到 heroku 之前获取此文件,以避免破坏通过 Web 界面完成的更新。

【问题讨论】:

    标签: python heroku


    【解决方案1】:

    我认为这是不可能的,原因之一是:Heroku dyno 拥有自己的ephemeral filesystem,并带有最新代码的 git checkout。但是,它不能反过来,无法将 dyno 中的文件更改检查到 git repo 中。这就是为什么您会收到“已经是最新的”响应。尝试拉时,因为 heroku git 远程与您的本地仓库同步。

    您可能应该将您的文件存储在 Amazon 的 S3 或数据库中,甚至将您的数据写入数据库,以便在 heroku 部署之间持久保存。

    【讨论】:

      【解决方案2】:

      您可以运行heroku run bash 并备份文件,然后部署您的应用再次运行heroku run bash 并删除新文件并将其替换为您备份的旧文件。希望对你有帮助

      【讨论】:

        【解决方案3】:

        如果您想在上次部署中检查文件,可以运行 heroku run bash --app your-app-name
        但是,如果您以编程方式将文件上传到您的应用程序,例如提交包含文件的表单,这些文件将在一段时间后消失,正如herok doc 提到的那样

        Heroku 文件系统是短暂的 - 这意味着在 dyno 运行时对文件系统的任何更改只会持续到该 dyno 关闭或重新启动。每个测功机都使用最新部署的文件系统的干净副本启动。这类似于有多少基于容器的系统(例如 Docker)运行。 此外,在正常操作下,dynos 每天都会在一个称为“循环”的过程中重新启动。

        【讨论】:

          猜你喜欢
          • 2013-05-19
          • 2012-08-30
          • 1970-01-01
          • 2013-03-23
          • 1970-01-01
          • 2021-03-19
          • 2021-12-04
          • 2015-01-29
          • 2013-02-07
          相关资源
          最近更新 更多