Red Hat Training

A Red Hat training course is available for OpenShift Online

2.4. Node.js

2.4.1. 概要

OpenShift Online には 、Node.js アプリケーションのビルドおよび実行用に S2I が有効な Node.js イメージが含まれています。Node.js S2I ビルダーイメージは、必要な依存関係を使用してアプリケーションソースを組み立てて、Node.js アプリケーションを含む新規イメージを作成します。結果として生成されるイメージは、OpenShift Online または Docker のいずれかで実行できます。

2.4.2. バージョン

現時点で在、OpenShift Online は Node.js のバージョン 4 および 6 を提供します。

重要

OpenShift Online v3 では、バージョン 0.10 は非推奨となり、使用できなくなりました。

2.4.3. イメージ

RHEL 7 イメージは、Red Hat レジストリーから入手できます。

$ docker pull registry.access.redhat.com/openshift3/nodejs-010-rhel7
$ docker pull registry.access.redhat.com/rhscl/nodejs-4-rhel7

これらのイメージは nodejs イメージストリームで使用することができます。

2.4.4. ビルドプロセス

S2I は、ソースコードをコンテナーに挿入し、コンテナーにソースコードの実行を準備をさせることで、実行準備が整ったイメージを生成します。S2I では、以下の手順を実行します。

  1. ビルダーイメージからコンテナーを起動します。
  2. アプリケーションソースをダウンロードします。
  3. ビルダーイメージコンテナーにスクリプトとアプリケーションソースをストリーミングします。
  4. (ビルダーイメージから) assemble スクリプトを実行します。
  5. 最終的なイメージを保存します。

ビルドプロセスの詳細のまとめについては、「S2I ビルドプロセス」を参照してください。

2.4.5. 設定

Node.js イメージは、環境変数を複数サポートし、環境変数を設定することで Node.js のラインタイムの設定や動作を制御できます。

イメージの一部としてこれらの環境変数を設定するには、ソースコードリポジトリーの中にある .s2i/environment ファイル に配置するか、ビルド設定の sourceStrategy 定義の環境セクションに定義します。

また、新規アプリケーションの作成時に既存のイメージを使用するか、デプロイメント設定などの既存のオブジェクトの環境変数を更新して環境変数を設定できます。

注記

ビルドの動作を制御する環境変数は、s2i ビルド設定または .s2i/environment ファイルの一部として設定して、ビルドの手順で利用できるようにする必要があります。

表2.3 開発モードの環境変数

変数名説明

DEV_MODE

true に設定されている場合には、ホットデプロイを有効にし、デバッグポートを開きます。さらに、ツールに対して、イメージが開発モードであることを指定します。デフォルトは false です。

DEBUG_PORT

デバッグポート。DEV_MODE が true に設定されている場合のみ有効です。デフォルトは 5858 です。

NPM_MIRROR

カスタムの NPM レジストリーのミラー URL。全 NPM パッケージはビルドプロセス中にミラーリンクからダウンロードされます。

2.4.6. ホットデプロイ

ホットデプロイでは、新しい S2I ビルドを生成する必要なしに、アプリケーションに変更をすばやく加え、デプロイすることができます。アプリケーションのソースコードに加えられた変更を即座に検出するには、環境変数を DEV_MODE=true に指定してビルドイメージを実行する必要があります。

新規アプリケーションの作成時 または 既存のオブジェクトの環境変数の更新時 に、新しい環境変数を設定できます。

警告

DEV_MODE=true の環境変数は、開発時またはデバッグ時にのみ使用するようにしてください。この変数の実稼働環境での使用は推奨されていません。

実行中の Pod のソースコードを変更するには、コンテナーに対するリモートシェルを開きます

$ oc rsh <pod_id>

実行中のコンテナーに入ると、現在のディレクトリーは、ソースコードが配置されている /opt/app-root/src に変わります。

2.4.7. Node.js テンプレート

OpenShift Online には、サンプル Node.js アプリケーションをデプロイするためのサンプルテンプレートが含まれています。このテンプレートは、ストレージの永続ボリュームを使用して MongoDB データベースを含む Node.js のサンプルアプリケーションをビルドし、デプロイします。

サンプルアプリケーションは、以下のコマンドで rhscl/nodejs-4-rhel7 イメージを使用してビルドし、デプロイできます。

$ oc new-app --template=nodejs-mongo-persistent