如何在heroku中包含文件但不包含github

时间:2018-02-08 07:15:00

标签: github heroku discord

我正在制作一个不和谐机器人并试图在Heroku上托管它。我正在从github部署,它部署得很好。我只有一个问题:discord bot使用一个必须保密的auth令牌登录,所以不在repo上,但是要求机器人登录。有没有人知道如何让文件不在回购,但在heroku应用程序?

编辑:我最初忘记提到这一点,但我使用的是node.js和discord.io,认为这可能会有所帮助。

2 个答案:

答案 0 :(得分:1)

你应该在Heroku上使用环境变量。如果您有密码,可以将其保存在这样的文件中(假设您的编程语言是Python):

import os
...
PASSWORD = os.environ['PASSWORD']

然后,在Heroku CLI中,您可以运行以下命令:

heroku config:set PASSWORD=mypassword1234

这样您就不必将凭据存储在文件中。

答案 1 :(得分:-1)

您需要拥有.env个文件,以便存储您的密码信息。例如密码,就像你的情况一样,你会希望discord bot使用一个必须保密的身份验证令牌登录。

您应该知道的一件事是,.env文件可以捕获您在本地运行应用程序所需的所有配置变量。当您使用任何heroku local命令启动应用程序时,将读取.env文件,并将每个名称/值对插入到环境中,以模仿配置变量的操作。

这是NodeJS中的示例.env文件:

connection: {
    host: Env.get('DB_HOST', CLEARDB_DATABASE_URL.host),
    port: Env.get('DB_PORT', ''),
    user: Env.get('DB_USER', CLEARDB_DATABASE_URL.username),
    password: Env.get('DB_PASSWORD', CLEARDB_DATABASE_URL.password),
    database: Env.get('DB_DATABASE', CLEARDB_DATABASE_URL.pathname.substr(1))
} 

现在,在部署到Heroku时,应用程序将使用配置中设置的密钥。

另请注意,您部署的生产应用可能会连接到本地开发应用之外的其他服务。例如,您部署的生产应用程序可能具有引用Heroku Postgres / Mongo数据库的DATABASE_URL config var,但您的本地应用程序可能在.env文件中有一个DATABASE_URL变量,该变量引用您的本地安装的Postgres /蒙戈。

有时您可能希望在local和Heroku环境中使用相同的config var。对于要添加到.env文件的每个config var,请在终端上使用以下命令:

heroku config:get CONFIG-VAR-NAME -s  >> .env

注意:不应将凭据和其他敏感配置值提交给源代码控制。在Git中,只需从项目目录中的终端运行.env文件即可排除echo .env >> .gitignore文件。{/ 1}}。

作为dotenv

的常见问题解答的一部分

我应该提交我的.env文件吗?

没有。我们强烈建议您不要将.env文件提交给版本控制。它应该只包含特定于环境的值,例如数据库密码或API密钥。您的生产数据库应具有与开发数据库不同的密码。

我希望这会有所帮助