SAP BTPのCloud Foundry EnvironmentにNode.jsアプリをデプロイする


この記事はNode.js Advent Calendar 2021の12日分の記事です。

今回はNode.js+expressのアプリを作ってSAP BTPのCloud Foundry環境にデプロイする方法について説明します

環境

OS:Windows10
Node.js:16.13.1
CF-CLI:V8

Node.jsとは

サーバーサイドで動くJavaScriptの実行環境です。

SAP BTPのCloud Foundry環境について

SAP BTPは、インテリジェントエンタープライズアプリケーションとデータベース、およびデータ管理機能、アナリティクス、統合機能、拡張機能が一つに統合された、クラウド環境とハイブリッド環境の両方に対応したプラットフォームです。
数百もの SAP アプリケーションとサードパーティアプリケーションの事前構築済み統合も含まれています。

SAP BTPのランタイム環境はCloud Foundry、Kyma、ABAPの3つがあります。
今回はCloud Foundryを使用します。

今回の流れ

・Node.jsアプリの作成
・SAP BTP環境の設定
・デプロイ

Node.jsアプリの作成

準備

https://nodejs.org/en/
上記からNode.jsをインストール

アプリ作成

以下のコマンドを実行します

$ mkdir nodeApp
$ cd nodeApp/
$ npm init
$ npm install express --save

新規ファイルapp.jsを作成
ポートは固定にしてしまうとBTP上で動かした場合、エラーになるので注意が必要です

app.js
var express = require("express");

var app = express();

//  listen()メソッドを実行して3000番ポートで待ち受け
var port = process.env.PORT || 3000
var server = app.listen(port, function () {
    console.log("Node.js is listening to PORT:" + server.address().port);
});

//  Hello Worldを表示
app.get("/", function (req, res, next) {
    res.send("Hello World");
});

package.jsonを編集します
"start": "node app.js" をscriptsに追加しています

package.json
{
  "name": "nodeapp",
  "version": "1.0.0",
  "engines": {
    "node": "14.x.x"
  },
  "description": "",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node app.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1"
  }
}

ローカルでの実行確認

ローカルでアプリを実行

$ node app.js

URLにアクセスしてプラウザでHello Worldが表示されることを確認

SAP BTP環境の設定

トライヤル環境に登録

SAP BTP環境の準備

Subaccount: trial - EntitlementsからCloud Foundry Runtimeを有効化

Create Spaceからスペースを作成
今回はdevって名前で作成
デプロイ時に使うのでAPI Endpointをメモしておく

https://api.cf.us10.hana.ondemand.com

デプロイ

Cloud Foundry CLIのインストール

https://github.com/cloudfoundry/cli#downloads
ここらからCloud Foundry CLIをインストール
真ん中あたりにインストーラーがあります。

デプロイ

以下のコマンドでログイン後、BTPのメールアドレスとパスワード入力

cf login -a <URL>

アプリをプッシュ

cf push nodeApp --random-route

アプリ(nodeApp)がBTP上に作成されていることを確認

アプリのメモリ等を設定したい場合は以下のファイルを作成

manifest.yml
---
applications:
- name: nodeApp
  memory: 128m
  instances: 1
  buildpack: https://github.com/cloudfoundry/nodejs-buildpack.git

manifest.ymlを参照するようになるのでcf pushのみでOKになる

※参考