首页 文章

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

提问于
浏览
1

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

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

2 回答

  • 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 / Mongo的本地安装 .

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

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

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

    作为dotenv常见问题解答的一部分

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

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

    我希望这有帮助

  • -1

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

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

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

    heroku config:set PASSWORD=mypassword1234
    

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

相关问题