我想在预定的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一无所知。
答案 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密钥"您的“帐户”页面中的值。