【问题标题】:After git push heroku - uploaded files on Heroku are lost在 git push heroku 之后 - Heroku 上上传的文件丢失了
【发布时间】:2012-06-30 02:19:21
【问题描述】:

我相当基本的应用程序允许用户上传头像。

应用部署到 Heroku

$ git add .
$ git commit -m "description"
$ git checkout master
$ git merge my-cool-new-feature
$ git push heroku

问题是,每次我将更改推送到 Heroku 时,上传到 Heroku 的所有文件都会丢失。我想,问题是文件夹/文件受版本控制,所以我将文件夹添加到 .gitignore

# Ignore User generated files
/public/system/*

并从存储库中删除文件。

$ git rm -rf --cached public/system

但问题仍然存在。你能指出我正确的方向吗?

【问题讨论】:

    标签: git heroku


    【解决方案1】:

    这是因为 Heroku 限制了您在其服务器上存储数据的方式。回到bamboo 堆栈天,storing any data was simply impossible 无需使用外部服务。由于他们引入了Cedar 堆栈,things have changed a little bit,但仍然无法存储持久数据。

    正如您所发现的,每次您将新的更改推送到 Heroku 应用程序时(或每次应用程序在不活动 x 分钟后关闭并重新启动时),您的应用程序都会重新创建,并且所有存储的数据都会丢失。

    最好的办法是根本不使用 /public 目录,而开始使用外部服务,例如 Amazon S3Rackspace Cloud FilesSpideroak

    【讨论】:

    • 感谢您的回答。由于数据库内容保留,我已经排除了重置。而且我在 Herokus“入门”文档中找不到任何相关内容。人们可能会认为开发人员会喜欢常见问题解答中的这些信息。再次感谢!
    • 嗯,数据库和文件访问是两个不同的东西。 Heroku 必须支持某种持久性存储,否则开发人员无法快速启动功能性应用程序,因此他们允许您访问共享的 postgreSQL 实例,但这不包括文件存储访问。
    【解决方案2】:

    如果您的应用程序需要接收用户上传的文件,您需要确保将这些上传文件存储在一个集中且持久的位置。

    使用 Heroku 的临时文件系统,任何写入 dyno 文件系统的信息都会在 dyno 重新启动时丢失。相反,Heroku 建议支持服务。对于文件和媒体存储,Amazon’s Simple Storage Service (S3) 是一个很好的解决方案。

    您可能想在 Heroku 网站上阅读这篇文章:Uploading Files to S3 in Ruby with Paperclip

    【讨论】:

    【解决方案3】:

    每次部署都会丢失您的文件。我首选的解决方案是使用 Paperclip 和 Amazon 存储桶。 Paperclip 会将您的图像存储在存储桶中,以便应用程序随意引用它。

    【讨论】:

      【解决方案4】:

      只需将您的 mongodb 网络访问权限更改为“任何人都可以访问” 问题解决了。

      上述所有步骤我都做了但不起作用,最后我更改了 monodb 访问权限,它起作用了

      【讨论】:

        猜你喜欢
        • 2023-01-31
        • 2012-02-28
        • 1970-01-01
        • 2012-07-18
        • 2013-09-05
        • 2017-05-23
        • 2021-05-19
        • 2012-09-07
        • 1970-01-01
        相关资源
        最近更新 更多