はじめに
IBM Cloud(旧 Bluemix)にローカルでは動いていたNodeのアプリをデプロイしようとしたが、以下のエラーが出てデプロイに失敗していた
2017-09-13T11:01:23.75+0900 [HEALTH/0] ERR healthcheck failed: failure to make TCP connection: dial tcp 10.254.1.74:8080: getsockopt: connection refused
2017-09-13T11:01:23.75+0900 [HEALTH/0] ERR Exit status 4
2017-09-13T11:00:14.98+0900 [CELL/0] ERR Timed out after 1m0s: health check never passed.
原因(と思われるところ)
ポート番号を指定するところが悪かったみたい
app.js
var http = require("http");
var express = require('express');
var bodyParser = require('body-parser');
//ベーシック認証
var basicAuth = require('basic-auth-connect');
var samples = require('./routes/samples');
var app=express();
app.use(bodyParser.json());
app.use(basicAuth('test','test'));
app.use(express.static(__dirname + '/public')); //setup static public directory
// app.use('/samples', samples);
app.use('/', samples);
//↓ここの部分!
var server_http=http.createServer(app).listen(3000, function() {
console.log('Listening on port %d', server_http.address().port);
});
解決方法
ここに"process.env.PORT ||" を追記した
var server_http=http.createServer(app).listen(3000, function() {
↓
var server_http=http.createServer(app).listen(process.env.PORT || 3000, function() {
一行しか変わっていませんが、修正後のコードです
app.js
var http = require("http");
var express = require('express');
var bodyParser = require('body-parser');
//ベーシック認証
var basicAuth = require('basic-auth-connect');
var samples = require('./routes/samples');
var app=express();
app.use(bodyParser.json());
app.use(basicAuth('test','test'));
app.use(express.static(__dirname + '/public')); //setup static public directory
// app.use('/samples', samples);
app.use('/', samples);
//修正箇所
var server_http=http.createServer(app).listen(process.env.PORT || 3000, function() {
console.log('Listening on port %d', server_http.address().port);
});
これでうまくいきました
IBM Cloud(旧 Bluemix)にデプロイする際にはポート番号固定ではうまくいかないようです。
このようにすると、ローカルで実行した際にはprocess.env.PORTが定義されていないので、ポート番号は3000番が指定され、Bluemixではprocess.env.PORTで取得したポート番号が指定されます(そうなるはずです)。
IBM Cloud(旧 Bluemix)でNodeのアプリを開発する際にはこちらの投稿が参考になると思います。
BluemixにデプロイしたNode.jsアプリが起動しない!そんなときは、ローカル環境で確認しましょう
編集履歴
2017/12/11
記事内のBluemix→IBM Cloudに変更
(Bluemixの名称がIBM Cloudになったため)