【问题标题】:After deploying to heroku部署到heroku之后
【发布时间】:2018-12-20 09:17:17
【问题描述】:

我有一个尚未完成的 web 应用,但我最近将它部署到 heroku。它使用:

  • 姜戈
  • 休息框架
  • Reactjs

现在,我已经将我的项目的deploy-heroku 分支部署到了heroku 的master

我项目的master 分支和deploy-heroku 分支之间的唯一区别是我在deploy-heroku 分支中对settings.py 进行了额外的更改(添加了prostgre sql 设置等)。

我想为我的 web 应用程序添加更多功能,所以我应该在 master 上工作,然后将这些更改复制粘贴到 deploy-heroku。这似乎是多余的!还有其他更好的方法吗?

【问题讨论】:

  • 这篇文章有什么问题?
  • 为什么要复制粘贴?这完全违背了 git 的目的。合并或变基。
  • 如果我将deploy-herokumaster 合并,那么我将无法合并localhost。这就是为什么我在master 中编写我的新功能,使用localhost 测试它们,然后必须在deploy-heroku 分支中进行这些更改。

标签: django git reactjs heroku


【解决方案1】:

您可以让 Heroku 自动部署在 master 上并使用带有 Django-environ (https://github.com/joke2k/django-environ) 的“.env”文件来更改您的 settings.py。您应该能够创建本地 Django 设置和 Heroku prod 设置。

例子:

.env :

DEBUG=on
SECRET_KEY=your-secret-key
DATABASE_URL=psql://urser:un-githubbedpassword@127.0.0.1:8458/database
SQLITE_URL=sqlite:///my-local-sqlite.db

setting.py:

 import environ
    env = environ.Env(
        # set casting, default value
        DEBUG=(bool, False)
    )
    # reading .env file
    environ.Env.read_env()

    # False if not in os.environ
    DEBUG = env('DEBUG')

    # Raises django's ImproperlyConfigured exception if SECRET_KEY not in os.environ
    SECRET_KEY = env('SECRET_KEY')

    # Parse database connection url strings like psql://user:pass@127.0.0.1:8458/db
DATABASES = {
    # read os.environ['DATABASE_URL'] and raises ImproperlyConfigured exception if not found
    'default': env.db(),
    # read os.environ['SQLITE_URL']
    'extra': env.db('SQLITE_URL', default='sqlite:////tmp/my-tmp-sqlite.db')
}

不要忘记将 .env 文件添加到 .gitignore 并在 app -> settings -> Reveal config vars

中更新 Heroku 环境变量

【讨论】:

  • 因此,如果它在 heroku 上,它将使用 postgresql,但如果它在我的 PC 中,它将使用本地数据库。对吗?
  • 关于如何编写 env 文件的任何文档?
  • .env 文件对于 Heroku 来说是一个糟糕的解决方案。 (a) 您的数据库凭据和其他敏感设置现在位于跟踪文件中。 (b) .env 文件全部目的是简化环境变量的填充,其中Heroku supports natively。这些文件在开发中很有用,但您应该通过heroku config 或 Heroku 上的 Heroku Web 界面使用适当的环境变量。 (c) 如果 .env 文件按照您的建议添加到 .gitignore,它将永远无法进入 Heroku(使用 Git 进行部署)。
  • 如果你想将它用于 Heroku,这确实是一个糟糕的解决方案,但如果我理解的话,这里的主要目标是分离本地环境和 Heroku 环境。
【解决方案2】:

【讨论】:

  • master 本地分支主机和deploy-heroku 具有与heroku 相关的设置。所以,如果我合并这些分支不会有问题!
  • 不要在本地提交更改,让项目在master上使用heroku。您应该保存 2 个不同的设置,然后可以选择使用哪一个。
猜你喜欢
  • 2017-07-24
  • 1970-01-01
  • 2013-12-31
  • 2022-11-29
  • 2011-10-16
  • 2022-01-11
  • 1970-01-01
  • 2022-01-15
  • 2017-09-01
相关资源
最近更新 更多