在预定的heroku dyno中访问heroku toolbelt命令?

时间:2014-11-26 15:42:41

标签: heroku

我想在预定的heroku任务中调用heroku postgres备份/恢复命令,但是boku提示符中没有heroku toolbelt,所以我无法调用heroku命令:

$ heroku run bash --app myapp
Running `bash` attached to terminal... up, run.4805
~ $ heroku --version
bash: heroku: command not found

如何在我的预定bash脚本中获取heroku命令? 我对Ruby或Ruby Gems一无所知。

4 个答案:

答案 0 :(得分:6)

将它放在预定的bash脚本的顶部:

# install heroku toolbelt
# inspired by https://toolbelt.heroku.com/install.sh
curl -s https://s3.amazonaws.com/assets.heroku.com/heroku-client/heroku-client.tgz | tar xz
mv heroku-client/* .
rmdir heroku-client
PATH="bin:$PATH"

然后,例如,您可以致电:

heroku pg:reset HEROKU_POSTGRESQL_YELLOW_URL  --app myapp-staging --confirm myapp-staging
heroku pgbackups:restore HEROKU_POSTGRESQL_YELLOW_URL `heroku pgbackups:url --app myapp-production` --app myapp-staging --confirm myapp-staging
和噗!临时数据库从生产数据库更新。

答案 1 :(得分:6)

由于Heroku在buildpacks运行完毕后锁定了文件系统,因此其他解决方案都不适用于我。

有一个第三方buildpack可以为您安装CLI。首先,在您的应用上将auth键设置为ENV变量:

heroku config:set HEROKU_API_KEY=`heroku auth:token` -a myapp

然后添加buildpack:

heroku buildpacks:add https://github.com/heroku/heroku-buildpack-cli -a myapp

重新部署您的应用,它应该能够通过CLI访问您的应用。如果您启用了https://devcenter.heroku.com/articles/dyno-metadata,您甚至可以使用$ HEROKU_APP_NAME访问当前应用的名称。

答案 2 :(得分:4)

正如Heather Piwowar所说,你确实可以自己下载并解压heroku tollbelt,但之后不需要移动文件。这是一个较短的版本:

curl -s https://s3.amazonaws.com/assets.heroku.com/heroku-client/heroku-client.tgz | tar xz
PATH="/app/heroku-client/bin:$PATH"

您现在可以根据需要使用heroku命令。

要进行身份验证,您可能需要设置HEROKU_API_KEY env var(使用heroku config:set HEROKU_API_KEY=1234567890 -a your-app-name)。

另外,请注意首次使用heroku命令的时间比预期的要长,因为它会尝试安装最新版本,依赖项和核心插件。

答案 3 :(得分:2)

您可以使用Heroku Scheduler并配置以下命令(作为示例)来创建数据库备份:

curl -s https://s3.amazonaws.com/assets.heroku.com/heroku-client/heroku-client.tgz \
 | tar xz && ./heroku-client/bin/heroku pg:backups:capture -a you-app-name-here

为此,您需要添加名为HEROKU_API_KEY的配置变量,并将其值设置为" API密钥"您的“帐户”页面中的值。