我想重新启动nodejs应用程序以更改其IP。我如何在应用程序本身内执行此操作?我试图强制崩溃但是如果应用程序在十分钟内崩溃两次,那么heroku将在第一次崩溃后十分钟重新启动dyno。
答案 0 :(得分:51)
如果您安装了Heroku CLI,则可以在应用程序的文件夹中运行heroku restart
或运行heroku restart --app application_name
。
如果您没有安装它,可以找到有关它的信息here。
答案 1 :(得分:6)
答案 2 :(得分:5)
答案 3 :(得分:2)
使用Heroku v3 API可以使用request node module
var token = 'youAPIKeyHere';
var appName = 'yourAppName here';
var dynoName = 'yourDynoHere';
var request = require('request');
request.delete(
{
url: 'https://api.heroku.com/apps/' + appName + '/dynos/',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/vnd.heroku+json; version=3',
'Authorization': 'Bearer ' + token
}
},
function(error, response, body) {
// Do stuff
}
);
还有一个node wrapper可以提供类似的体验,但文档记录很差,无论如何都需要了解v3 API
var token = 'youAPIKeyHere';
var appName = 'yourAppName here';
var dynoName = 'yourDynoHere';
var Heroku = require('heroku-client');
var heroku = new Heroku({ token: token });
heroku .delete('/apps/' + appName + '/dynos/' + dynoName)
.then( x => console.log(x) );
我还发现使用此代码在浏览器中进行实验很有用
var token = 'youAPIKeyHere';
var appName = 'yourAppName here';
var dynoName = 'yourDynoHere';
var xhr = new XMLHttpRequest();
xhr.open(
'DELETE',
'https://api.heroku.com/apps/' + appName + '/dynos/' + dynoName
);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('Accept', 'application/vnd.heroku+json; version=3');
xhr.setRequestHeader('Authorization', 'Bearer ' + token);
xhr.onload = function() {
console.log(xhr.response);
};
xhr.send();
我个人确实发现使用删除方法有点担心。使用delete
方法时应谨慎,仅/apps/$$appName$$
端点将删除该应用。这来自个人经历
对于上述任何一项,如果省略dyno名称,您将重新启动应用程序下的所有dynos