コンテナ内のNode.js
このガイドでは、以下の方法を学びます。
- Express Node.jsサービスコンテナ用の
Dockerfileファイルを作成する - サービスのビルド、実行、および機能の検証
- コンテナ内で実行中のサービスをデバッグする
前提条件
Express Node.jsアプリケーションの作成
-
プロジェクト用のフォルダーを作成します。
-
プロジェクトフォルダーで開発コマンドプロンプトを開き、プロジェクトを作成します。
npx express-generator npm install
プロジェクトに Docker ファイルを追加する
-
プロジェクトフォルダーを VS Code で開きます。
-
コマンドパレット(⇧⌘P (Windows, Linux Ctrl+Shift+P))を開き、Containers: Add Docker Files to Workspace...コマンドを使用します。

-
アプリケーションプラットフォームの入力を求められたら、Node.jsを選択します。
-
デフォルトのpackage.jsonファイルを選択します。
-
アプリケーションポートの入力を求められたら、
3000と入力します。 -
Docker Composeファイルを含めるかどうかを求められたら、YesまたはNoを選択します。Composeは通常、複数のコンテナを同時に実行する場合に使用されます。
拡張機能はDockerfileファイルと.dockerignoreファイルを作成します。Docker Composeファイルを含めることを選択した場合は、docker-compose.ymlとdocker-compose.debug.ymlも生成されます。最後に、拡張機能は、コンテナをビルドおよび実行するための(デバッグ構成とリリース構成の両方での)VS Codeタスクを.vscode/tasks.jsonに作成し、コンテナ内でサービスをデバッグするためのデバッグ起動構成を.vscode/launch.jsonに作成します。
イメージへの環境変数の追加
Container Tools拡張機能は、IntelliSenseを使用してオートコンプリートやコンテキストヘルプを提供することで、Dockerfileの作成を支援します。この機能を体験するには、以下の手順に従ってサービスイメージに環境変数を追加してください。
-
Dockerfileファイルを開きます。 -
ENV命令を使用して、サービスコンテナイメージに環境変数を追加します。
Container Tools拡張機能が、利用可能なすべてのDockerfile命令をリストアップし、構文を説明していることに注目してください。
Container Tools拡張機能は、
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 -
Webブラウザーを開き、https://:3000にアクセスします。以下のようなページが表示されるはずです。

-
テストが完了したら、ターミナルでCtrl+Cを入力します。
サービスイメージのビルド
-
コマンドパレット(⇧⌘P (Windows, Linux Ctrl+Shift+P))を開き、Container Images: Build Image...コマンドを選択します。
-
Container Explorerを開き、新しいイメージがImagesビューに表示されていることを確認します。

サービスコンテナの実行
-
前のセクションでビルドしたイメージを右クリックし、RunまたはRun Interactiveを選択します。コンテナが起動し、Containersビューで確認できるようになるはずです。

-
Webブラウザーを開き、https://:3000にアクセスします。以下のようなページが表示されるはずです。

-
テストが完了したら、Containersビューでコンテナを右クリックし、Stopを選択します。
サービスコンテナ内でのデバッグ
Container Tools拡張機能がアプリケーションにファイルを追加する際、コンテナ内で実行されているサービスをデバッグするためのVS Codeデバッガー構成も.vscode/launch.jsonに追加されます。拡張機能はサービスが使用するプロトコルとポートを検出し、ブラウザーをそのサービスへ誘導します。
-
routes/index.jsの'/'ルートに対するget()ハンドラーにブレークポイントを設定します。 -
Containers: Node.js Launchデバッガー構成が選択されていることを確認します。

-
デバッグを開始します(F5キーを使用します)。
- サービスのイメージがビルドされます。
- サービスのコンテナが実行されます。
- ブラウザーが開き、サービスコンテナにマップされた(ランダムな)ポートへ接続されます。
- デバッガーが
index.jsのブレークポイントで停止します。
デバッガーはアプリケーションが開始された*後*にアタッチされるため、初回はブレークポイントを通過してしまう可能性があることに注意してください。2回目にデバッガーが停止する様子を確認するには、ブラウザーを更新する必要がある場合があります。
tasks.jsonのnodeオブジェクト下にあるdocker-run: debugタスクのinspectModeプロパティをbreakに設定することで、デバッガーがアタッチされるまで実行を開始しないようにアプリケーションを構成できます。
アプリケーションログの表示
コンテナに対するView Logsコマンドを使用することで、VS Codeでログを表示できます。
-
Container Explorerへ移動します。
-
Containersビューで、対象のコンテナを右クリックしてView Logsを選択します。

-
出力がターミナルに表示されます。
次のステップ
完了です!コンテナーが準備できたので、次のことができます。