【问题标题】:How to ignore a file from GitHub repo when deploying to Heroku?部署到 Heroku 时如何忽略 GitHub 存储库中的文件?
【发布时间】:2020-01-15 18:19:25
【问题描述】:

我在 Heroku 上有一个与 GitHub 链接的 Node.js 应用程序。问题是每次我将 master 分支部署到 Heroku 时,整个应用程序都会在 Heroku 上被覆盖。

通常这很好,但是在根文件夹中有一个数据库文件,该文件会通过聊天应用程序不断更新,并且在每次部署时都会重置。如果 SQLite 数据库在主脚本运行时不存在,则会自动生成。

我的问题是如何使 SQLite 数据库文件成为 Heroku 应用程序中唯一的持久文件,而不会在从 GitHub 上的主分支部署时被覆盖。

我尝试添加一个.slugignore 文件并在其中包含database.sqlite

【问题讨论】:

  • 是根目录中的“database.sqlite”,还是您在.gitignore 中传递完整路径?你有 .gitignore 文件吗?

标签: javascript node.js github heroku deployment


【解决方案1】:

如您所见,要回答您的问题,您可以在使用 .slugignore file 部署到 Heroku 时忽略文件。

但是,这并不能解决您的问题。 Heroku 的文件系统is ephemeral。每当您的测功机重新启动时,您对其所做的任何更改都将丢失。这个happens frequently(每天至少一次)。因此,即使您将database.sqlite 添加到您的.slugignore,您的数据也会丢失。

解决方案是使用客户端-服务器数据库,而不是像 SQLite 这样的基于文件的数据库。 Heroku Postgres 是一个相当简单的选择,它有一个免费层。如果你不想使用 PosgreSQL,你可以choose another database。

无论您选择什么数据库,我都强烈建议您在开发中也切换到同一个数据库。数据库系统不是相互替代的,您不想在尝试部署到生产环境时发现其中的差异。

【讨论】:

    猜你喜欢
    • 2019-10-09
    • 2012-01-20
    • 2013-07-07
    • 2016-12-11
    • 2011-11-06
    • 2012-06-25
    • 2020-04-11
    • 2016-12-29
    相关资源
    最近更新 更多