この記事は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上で動かした場合、エラーになるので注意が必要です
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に追加しています
{
"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環境の設定
###トライヤル環境に登録
https://www.sap.com/products/business-technology-platform/trial.html
###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上に作成されていることを確認
アプリのメモリ等を設定したい場合は以下のファイルを作成
---
applications:
- name: nodeApp
memory: 128m
instances: 1
buildpack: https://github.com/cloudfoundry/nodejs-buildpack.git
manifest.ymlを参照するようになるのでcf pushのみでOKになる
※参考