Bluemixは、IBMが提供しているPaaSで、開発言語(ランタイム)はSwift、Java、JavaScipt、Ruby、PHP、Python、Perlなどの言語が利用できます。今回は、Bluemixで「IBM SDK for Node.js」を使用して、Node.jsの動作環境を構築します。スタータコードとして提供されているWebアプリケーションをパソコンにインストールし、cf ツールを使用して、Bluemix 上へデプロイして実行します。動作環境はWindows 7 Professional 32bitです。

Bluemix実行環境の構築

Bluemix へようこそ」で新規アカウントを作成します。初めての方は、30日間の無料アカウントが作成できす。

Bluemix へようこそ

ログインすると、次のように表示がされます。

bluemix01

「アプリケーションの作成」ボタンを押すと、次のように表示されます

アプリケーションの作成

「Cloud Foundry ランタイム」を押し、「SDK for Node.js」をクリックすると、次のように表示され、アプリ名「Hello-T」を設定します。

Hello-Tの情報

下部右の「作成」ボタンを押すとHello-Tのダッシュボードが作成されます。

作成

このダッシュボードでは、

  • IBM® Bluemix®コマンド・ライン・インターフェースのダウンロード
  • Cloud Foundry コマンド・ライン・インターフェースのダウンロード
  • スタータコードのダウンロード
  • パソコンからのデプロイの手順

などの情報が表示されます。

デプロイツールのインストール

パソコンで開発したWebアプリケーションは次のツールを使って、Bluemixにデプロイできます。

  • IBM® Bluemix®コマンド・ライン・インターフェース
  • Cloud Foundry コマンド・ライン・インターフェース

IBM® Bluemix®コマンド・ライン・インターフェースのインストール

Bluemixに接続するためのコマンドで、ダッシュボードの「IBM® Bluemix®コマンド・ライン・インターフェースの」ボタンをクリックし、画面上部右の「すべてのバーション」をクリックすると次の表示されるのでWin32の最新バージョンを選択し、パソコンにインストールします。

Bluemix®コマンド・ライン・インターフェースのインストール

Cloud Foundry コマンド・ライン・インターフェース(cf-cli)のインストール

cf-cliは、IBM® Bluemix®にアプリケーションをデプロイするために使用され、パソコンのコマンドプロンプトで実行されます。つぎの「cloudfoundry/cli URL」から「v6.14.1」をダウンロードして、パソコンにインストールします。

BluemixでNode.jsを構築した動作確認

Bluemixで提供されるスターター・コードを用いて動作確認を行います。

「スターター・コードのダウンロード」ボタンを押して、スターター・コードをダウンロードし、パッケージを新規ディレクトリーに解凍して開発環境をパソコンのCドライブの直下にそのままコピーして、セットアップします。デプロイのコマンドは、パソコンのコマンドプロンプトから入力します。

スターター・コードが置かれているディレクトリーに移動します。

cd \Hello-T

IBM® Bluemix® に接続します。

bluemix api https://api.ng.bluemix.net

Bluemix にログインします。パスワードが聞かれるので入力します。

bluemix login -u xxxxxxxx -o “TomoSoft” -s “xxxx”

Webアプリケーションを Bluemix にデプロイします。

cf push “Hello-T”

ブラウザーで以下の URL を入力して、アプリにアクセスします。

Hello-T.mybluemix.net

ブラウザーに次の表示があれば、Node.jsが正常に動作しています。

Node.jsの動作確認

Bluemix にアプリをデプロイする時のエラー「panic: runtime error」について

次に示すように、cfのバージョンがv6.22.2で、「cf push “Hello-T”」コマンドを実行時に「panic: runtime error: invalid memory address or nil pointer dereference」のエラーが発生しました。cfのバージョンをv6.14.1にダウングレードすると正常にデプロイが完了しました。どうも最新のバージョンと相性が悪いみたいです。

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x52330b]

goroutine 944 [running]:
panic(0xaf1900, 0x202de030)
        /usr/local/go/src/runtime/panic.go:500 +0x331
sync/atomic.LoadUint64(0x206e82ac, 0x20844690, 0x206e8210)
        /usr/local/go/src/sync/atomic/asm_386.s:159 +0xb
code.cloudfoundry.org/cli/vendor/github.com/cloudfoundry/noaa/consumer.(*Consumer).retryAction(0x206e8210, 0x20405cc0, 0x206ea480)
        /tmp/build/80754af9/gopath/src/code.cloudfoundry.org/cli/vendor/github.com/cloudfoundry/noaa/consumer/async.go:269 +0xa2
code.cloudfoundry.org/cli/vendor/github.com/cloudfoundry/noaa/consumer.(*Consumer).streamAppDataTo(0x206e8210, 0x20844680, 0x206bd6e0, 0x24, 0x203d2380, 0x307, 0x2069c4f0, 0x206ea480, 0x206bfa01)
        /tmp/build/80754af9/gopath/src/code.cloudfoundry.org/cli/vendor/github.com/cloudfoundry/noaa/consumer/async.go:188 +0x10c
code.cloudfoundry.org/cli/vendor/github.com/cloudfoundry/noaa/consumer.(*Consumer).tailingLogs.func2(0x206ea480, 0x206ea440, 0x206e8210, 0x20844680, 0x206bd6e0, 0x24, 0x203d2380, 0x307, 0x2069c4f0,
1)
        /tmp/build/80754af9/gopath/src/code.cloudfoundry.org/cli/vendor/github.com/cloudfoundry/noaa/consumer/async.go:163 +0xae
created by code.cloudfoundry.org/cli/vendor/github.com/cloudfoundry/noaa/consumer.(*Consumer).tailingLogs
        /tmp/build/80754af9/gopath/src/code.cloudfoundry.org/cli/vendor/github.com/cloudfoundry/noaa/consumer/async.go:164 +0x106

IBM Bluemixのサポート

IBM Bluemixのサポートを受けるには、次のようにダッシュボードの右上にあるサポートをクリックして、「Add Ticket」を選択します。エラー状況を設定する画面が表示されるので記述します。日本語の質問でも回答が返ってきます。ただし英語です。2日後に回答が返ってきました(早いです)。

IBM Bluemixのサポート