我正在制作一个不和谐机器人并试图在Heroku上托管它。我正在从github部署,它部署得很好。我只有一个问题:discord bot使用一个必须保密的auth令牌登录,所以不在repo上,但是要求机器人登录。有没有人知道如何让文件不在回购,但在heroku应用程序?
编辑:我最初忘记提到这一点,但我使用的是node.js和discord.io,认为这可能会有所帮助。
答案 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}}。
没有。我们强烈建议您不要将.env
文件提交给版本控制。它应该只包含特定于环境的值,例如数据库密码或API密钥。您的生产数据库应具有与开发数据库不同的密码。
我希望这会有所帮助