Heroku忽略对文件的更新

时间:2015-10-28 10:42:54

标签: git heroku

我正在使用Heroku来托管一个节点应用程序,该应用程序保持登录文件。日志几乎只是时间戳和事件的名称。

我的问题是,部署时是否可以忽略此文件?我希望能够一次部署文件,之后将其放在一些忽略列表中,这样它就不会再使用repo版本进行更新。

我想要的工作流程:

  1. 提交对git和push(所有文件)的更改
  2. 在Heroku上部署(更新除/logs/event_log.json之外的所有文件)
  3. 到目前为止,工作流是将日志重写为空状态,因为它们在github存储库中为空。

    我已经尝试将文件添加到.slugignore但是在下次部署期间从Heroku服务器中删除了所有文件并且不是我想要的行为。

    是否有其他解决方案,或者我是否必须使用数据库来保存它?

1 个答案:

答案 0 :(得分:1)

您好像正在寻找.gitignore 该文件允许您忽略GIT中的任何文件。你不会看到他们并且没有任何机会承诺他们。如果它们已经存在于您的git存储库中,它们将保持原样。

为了忽略日志文件夹中的所有文件,您只需将以下内容添加到此文件中:

logs/

对于gitignore文件的几个例子,GitHub有一个非常好的存储库:https://github.com/github/gitignore

如果你正在寻找的是能够在部署和应用程序重新启动时在运行时保持磁盘上的文件更新,那么这是不可能的。

每个dyno都是一个独立的容器,与其他容器没有任何共享。重新启动或重新部署应用程序后,旧的正在运行的容器将被停止并销毁,您的应用程序将在另一台服务器上启动。

这意味着heroku有一个ephemeral filesystem。一旦Web请求完成,就不能指望存储在磁盘上的任何文件都保留在那里。

如果这是一个日志文件,您应该使用heroku' logging pipeling,它将拦截发送到STDOUT或STDERR的所有日志。

对于您的应用需要存储的任何文件,您应该使用Amazon S3等专用文件存储系统。