皆さん、こんにちは。戸倉彩です。
今回はIBM Cloud上で提供されているCloud Foundryサービスを利用してNode.jsのWebアプリケーションを構築する手順について紹介します。
はじめに
このチュートリアルでは、次のアカウントおよびツールを利用します。必要に応じて入手してください。
・ IBM Cloud アカウント: まだお持ちでない方は、過去に投稿した「「IBM Cloudをはじめました」無料ではじめられるライト・アカウント登録方法」をご覧ください。
・ IBM Cloud CLI: IBM Cloudをコマンドで操作するためのコマンド・ライン・インターフェース(CLI)です。
・ Git: GitHubリポジトリーからクローンする際に利用します。
・ Node.js: 今日現在、最新バージョン12.7.0が提供されていますが、安定バージョン10.16.1 LTSを利用されることをお勧めします。
Step 1: サンプルアプリケーションのクローン
下記のコマンドを実行してNode.jsのHello WorldサンプルアプリケーションをGitHubのリポジトリからクローンします。
git clone https://github.com/IBM-Cloud/get-started-node
Step 2: アプリケーションをローカル実行
1. コマンドラインで、ディレクトリをダウンロードしたサンプルアプリケーションがある場所に変更します。
cd get-started-node
2. アプリケーションをローカルで実行するため、次のコマンドを実行してpackage.jsonファイルにリストされている依存関係をインストールします。
npm install
3. 次のコマンドでアプリケーションを実行してください。
npm start
4. Webブラウザで http://localhost:3000 にアクセスします。
5. 「ようこそ」画面が表示されたら名前を入力します。
6. 「こんにちは <入力した名前>」と表示されたらOKです。
7. コマンドラインで[Control]+[C]を同時に押し、アプリケーションの実行を止めます。
Step 3: デプロイのためのアプリの準備
IBM Cloudにデプロイするには、manifest.yml ファイルをセットアップします。 manifest.yml には、名前、各インスタンスに割り当てるメモリ容量、ルートなど、アプリに関する基本的な情報が含まれています。 get-started-nodeディレクトリに、次のサンプルのmanifest.ymlファイルが存在することを確認してください。
applications:
- name: GetStartedNode
random-route: true
memory: 128M
Step 4: IBM Cloudへのアプリケーションのデプロイ
1. コマンドラインからIBM Cloudにログインします。
ibmcloud login
企業アカウントなどでシングルサインオンを採用している場合は、次のコマンドでログインしてください。
ibmcloud login --sso
2. Cloud Foundryの組織とスペースをターゲットにします。
ibmcloud target --cf
組織やスペースが設定されていない場合は、「組織とスペースの追加」サイトを参照してください。
3. get-started-nodeディレクトリー内から、アプリをIBM Cloudにプッシュします。
ibmcloud cf push
アプリケーションのデプロイには数分かかることがあります。デプロイが完了すると、アプリが実行されているというメッセージが表示されます。 pushコマンドの出力に表示されているURLでアプリを表示するか、次のコマンドを実行してアプリの展開ステータスとURLの両方を表示します。
ibmcloud cf apps
また、「IBM Cloud リソース・リスト」サイトにアクセスしてアプリを表示することもできます。
4. 生成されたURL、例えば (getstartednode-xxx).mybluemix.net にブラウザでアクセスしてアプリケーションがIBM Cloud上にデプロイしたことを確認してください。
Step 5: データベースの追加
次に、このアプリケーションに IBM Cloudant NoSQLデータベース を追加して、ローカルでもIBM Cloud上でも実行できるようにアプリケーションをセットアップします。
1. ブラウザで、IBM Cloudにログインしてダッシュボードを表示します。[リソースの作成] ボタンを選択します。
2. [カタログ] から 「Cloudant」 を検索して、サービスを選択します。
3. [Available authentication methods(利用可能な認証方法)]で、[Use both legacy credentials and IAM (従来の認証情報とIAMの両方を使用する)] を選択します。他のフィールドはデフォルト設定のままにすることができます。 [作成]ボタンをクリックしてサービスを作成します。作成には数分を要する場合があります。
4. ナビゲーションで [接続] に移動し、[接続の作成]ボタン をクリックします。アプリケーションを選択して [接続] をクリックします。
5. デフォルト値を使用して、[Connect&restage app] をクリックしてデータベースをアプリケーションに接続します。プロンプトが表示されたら、[アプリの接続および再ステージ] をクリックします。
Step 6: データベースの使用
このデータベースを指すようにローカルコードを更新します。アプリケーションが使用するサービスの資格情報を格納するJSONファイル を作成します。このファイルは、アプリケーションがローカルで実行されている場合にのみ使用されます。
IBM Cloud で実行している場合、資格情報は VCAP_SERVICES 環境変数から読み取られます。
1. get-started-node ディレクトリに、次の内容のvcap-local.jsonというファイルを作成します。
{
"services": {
"cloudantNoSQLDB": [
{
"credentials": {
"url":"CLOUDANT_DATABASE_URL"
},
"label": "cloudantNoSQLDB"
}
]
}
}
2. IBM Cloudリソース・リストからご自身のアプリケーションをクリックして詳細を表示します。アプリの詳細ページで、サイドバーの [接続] をクリックします。 IBM Cloudantメニュー・アイコンの横の (…) をクリックして、[資格情報の表示] を選択します。
3. CLOUDANT_DATABASE_URLをコピーして、vcap-local.jsonファイルのurlフィールドにURLだけをコピーして貼り付けてファイルを保存します。
4. アプリケーションをローカルで実行します。
npm start
5. ローカル上で実行したご自身のアプリを http://localhost:3000 にアクセスして、名前を入力して[Enter]キーを押します。
6. アプリに入力した名前はすべてデータベースに追加されます。
以上です。
IBM Cloud Foundryでは、Node.jsの他にもJava、ASP.NET Core、Swift、Go、PHP、Python、Rubyに対応していますので、いろいろチェックしてみてください。