コンテナー内の 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 ファイルを含めるかどうかを確認するメッセージが表示されたら、[はい] または [いいえ] を選択します。Compose は通常、複数のコンテナーを一度に実行する場合に使用されます。
拡張機能によって、Dockerfile
と .dockerignore
ファイルが作成されます。Docker Compose ファイルを含めることを選択した場合は、docker-compose.yml
と docker-compose.debug.yml
も生成されます。最後に、拡張機能はコンテナーのビルドと実行 (デバッグとリリースの両方の構成で) のための VS Code タスクのセットを .vscode/tasks.json
に作成し、コンテナー内のサービスをデバッグするための起動デバッグ構成を .vscode/launch.json
に作成します。
イメージに環境変数を追加する
コンテナー ツール拡張機能は、IntelliSense を使用して自動補完とコンテキスト ヘルプを提供することで、Dockerfile の作成を支援します。この機能の動作を確認するには、次の手順に従ってサービス イメージに環境変数を追加します
-
Dockerfile
ファイルを開きます。 -
ENV
命令を使用して、サービス コンテナー イメージに環境変数を追加します。コンテナー ツール拡張機能が利用可能なすべての Dockerfile 命令を一覧表示し、構文を説明する方法に注目してください。
コンテナー ツール拡張機能は、
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...] コマンドを選択します。
-
コンテナー エクスプローラーを開き、新しいイメージが [Images] ビューに表示されていることを確認します
サービス コンテナーを実行する
-
前のセクションでビルドしたイメージを右クリックし、[Run] または [Run Interactive] を選択します。コンテナーが起動し、[Containers] ビューで確認できるはずです
-
Web ブラウザーを開き、https://:3000 に移動します。次のようなページが表示されるはずです
-
テストが完了したら、[Containers] ビューでコンテナーを右クリックし、[Stop] を選択します。
サービス コンテナーでデバッグする
コンテナー ツール拡張機能がアプリケーションにファイルを追加すると、コンテナー内で実行中のサービスをデバッグするための 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 でログを表示できます
-
コンテナー エクスプローラーに移動します。
-
[Containers] ビューで、コンテナーを右クリックし、[View Logs] を選択します。
-
出力がターミナルに表示されます。
次のステップ
完了しました!コンテナの準備ができたので、次のことを行いたいかもしれません。