コンテナー内の Node.js
このガイドでは、次の方法について説明します。
- Express Node.js サービスコンテナー用の
Dockerfile
ファイルを作成する - サービスの機能をビルド、実行、検証する
- コンテナー内で実行されているサービスをデバッグする
前提条件
Express Node.js アプリケーションを作成する
-
プロジェクト用のフォルダーを作成します。
-
プロジェクトフォルダーで開発コマンドプロンプトを開き、プロジェクトを作成します。
npx express-generator npm install
プロジェクトに Docker ファイルを追加する
-
VS Code でプロジェクトフォルダーを開きます。
-
コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) を開き、[Docker: Docker ファイルをワークスペースに追加...] コマンドを使用します
-
アプリケーションプラットフォームの入力を求められたら、[Node.js] を選択します。
-
デフォルトの [package.json] ファイルを選択します。
-
アプリケーションポートの入力を求められたら、
3000
と入力します。 -
Docker Compose ファイルを含めるかどうかを尋ねられたら、[はい] または [いいえ] を選択します。Compose は通常、複数のコンテナーを同時に実行する場合に使用されます。
拡張機能は、Dockerfile
ファイルと .dockerignore
ファイルを作成します。Docker Compose ファイルを含めることを選択した場合、docker-compose.yml
と docker-compose.debug.yml
も生成されます。最後に、拡張機能は、コンテナーをビルドおよび実行するための一連の VS Code タスク (.vscode/tasks.json
内) (デバッグ構成とリリース構成の両方) と、コンテナー内でサービスをデバッグするための起動デバッグ構成 (.vscode/launch.json
内) を作成します。
イメージに環境変数を追加する
Docker 拡張機能は、IntelliSense を使用して自動補完とコンテキストヘルプを提供することにより、Dockerfile の作成を支援します。この機能の動作を確認するには、次の手順に従ってサービスイメージに環境変数を追加します。
-
Dockerfile
ファイルを開きます。 -
ENV
命令を使用して、サービスコンテナーイメージに環境変数を追加します。Docker 拡張機能が、利用可能なすべての Dockerfile 命令をリストし、構文を説明する方法に注目してください。
Docker 拡張機能は、Dockerfile の
base
ステージを使用して、サービス用のコンテナーイメージのデバッグバージョンを作成します。環境変数定義をbase
ステージに配置して、デバッグバージョンとリリースバージョンの両方のコンテナーイメージでこの変数を使用できるようにします。 -
Dockerfile
ファイルを保存します。
サービスをローカルで実行する
-
ターミナル (⌃` (Windows、Linux Ctrl+`)) を開きます。
-
npm run start
と入力してアプリケーションを開始します> express-app@0.0.0 start /Users/user/code/scratch/express-app > node ./bin/www
-
ウェブブラウザを開き、http://localhost:3000 に移動します。次のようなページが表示されるはずです。
-
テストが完了したら、ターミナルで Ctrl+C を入力します。
サービスイメージをビルドする
-
コマンドパレット (⇧⌘P (Windows、Linux Ctrl+Shift+P)) を開き、[Docker イメージ: イメージのビルド...] コマンドを選択します。
-
Docker エクスプローラーを開き、新しいイメージが [イメージ] ツリーに表示されていることを確認します
サービスコンテナーを実行する
-
前のセクションでビルドしたイメージを右クリックし、[実行] または [インタラクティブに実行] を選択します。コンテナーが起動し、[Docker コンテナー] ツリーに表示されるはずです
-
ウェブブラウザを開き、http://localhost:3000 に移動します。次のようなページが表示されるはずです。
-
テストが完了したら、[コンテナー] ツリーでコンテナーを右クリックし、[停止] を選択します。
サービスコンテナー内でデバッグする
Docker 拡張機能がアプリケーションにファイルを追加すると、コンテナー内で実行されているサービスをデバッグするための VS Code デバッガー構成も .vscode/launch.json
に追加されます。拡張機能は、サービスで使用されているプロトコルとポートを検出し、ブラウザをサービスにポイントします。
-
routes/index.js
の'/'
ルートのget()
ハンドラーにブレークポイントを設定します。 -
[Docker Node.js Launch] デバッガー構成が選択されていることを確認します。
-
デバッグを開始します (F5 キーを使用)。
- サービスの Docker イメージがビルドされます。
- サービスの Docker コンテナーが実行されます。
- ブラウザが、サービスコンテナーにマップされた (ランダムな) ポートで開きます。
- デバッガーが
index.js
のブレークポイントで停止します。
デバッガーはアプリケーションの起動後にアタッチするため、最初の試行ではブレークポイントが Miss される可能性があることに注意してください。デバッガーが 2 回目の試行でブレークするのを確認するには、ブラウザを更新する必要がある場合があります。
tasks.json
のdocker-run: debug
タスクのnode
オブジェクトの下にあるinspectMode
プロパティをbreak
に設定することで、アプリケーションがデバッガーのアタッチを待機してから実行を開始するように構成できます。
アプリケーションログを表示する
コンテナーの [ログを表示] コマンドを使用すると、VS Code でログを表示できます
-
Docker エクスプローラーに移動します。
-
[コンテナー] タブで、コンテナーを右クリックし、[ログを表示] を選択します。
-
出力がターミナルに表示されます。
次のステップ
これで完了です。コンテナーの準備ができたので、次のことを行うことができます。