我使用python烧瓶框架开发了web应用程序。开发之后,我将代码推送到github。然后,heroku the服务器自动从github获取代码。我想隐藏我的应用程序在github上的数据库连接url和app.secret_key。我怎么能控制这种局面呢?
我需要一个解决方案,以帮助我隐藏的应用程序的秘密信息。另外,我需要使用github将该信息移动到heroku web服务器。
发布于 2019-04-16 11:11:21
这可以使用环境变量来实现,即使用heroku设置heroku变量,并使用python代码访问它们。在您的例子中,它将在heroku cli上这样做。
heroku config:set DB_URI = your_db_uri_here并在python中使用
import os
db_uri = os.environ.get('DB_URI', None)希望它能帮上忙
发布于 2019-04-16 11:10:41
Heroku团队实际上已经编写了关于构建部署在云中的应用程序的最佳实践的指南,名为“12因子应用程序”。他们有一个关于配置的章节,这是一个非常适合你正在寻找的东西。
主要的概念是,配置要么是秘密的,要么是环境基础上的更改(例如本地和生产)应该作为环境变量存储,并在代码库中引用为环境变量。
例如:
DB_HOST = "db.mydomain.com" # Bad practice
DB_HOST = os.environ.get("DB_HOST") # Good practice如果您正在使用诸如Docker和Docker Compose之类的工具,您可以自动加载一个.env文件来将所有环境变量加载到您的环境中。此文件应存储在存储库之外,并与.gitignore文件一起忽略。
如果不使用Docker,还可以安装python包(如python-dotenv ),在本地工作时从.env文件加载环境变量。
发布于 2019-04-16 11:05:40
Heroku配置命令帮助管理您的应用程序的配置vars,如数据库URL、秘密密钥等。您可以阅读更多关于它的这里。一旦在Heroku中设置了它们,就不需要将它们存储在代码中。如果您不喜欢使用Heroku设置这些值,也可以使用Heroku仪表板。
如上文所述,一旦设置了配置vars,就可以使用环境变量在代码中访问它们。下面是Python的一个示例,它使用boto库并建立S3连接,从配置vars获取S3_KEY和S3_SECRET。更多的示例是可用的这里。
from boto.s3.connection import S3Connection
s3 = S3Connection(os.environ['S3_KEY'], os.environ['S3_SECRET'])现在,您可以安全地将您的代码推送给Github。
https://stackoverflow.com/questions/55706500
复制相似问题