コンテナー内の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 を開き、新しいイメージがイメージビューに表示されていることを確認します。
サービスコンテナーを実行する
-
前のセクションでビルドしたイメージを右クリックし、Run または Run Interactive を選択します。コンテナーが起動し、コンテナービューで表示できるはずです。
-
Web ブラウザーを開き、https://:3000 に移動します。次のようなページが表示されるはずです。
-
テストが終了したら、コンテナービューでコンテナーを右クリックし、Stop を選択します。
サービスコンテナーでデバッグする
Container Tools 拡張機能は、アプリケーションにファイルを追加すると同時に、コンテナー内で実行されているサービスをデバッグするための VS Code デバッガー構成 を .vscode/launch.json
に追加します。この拡張機能は、サービスで使用されているプロトコルとポートを検出し、ブラウザーをサービスに誘導します。
-
routes/index.js
の'/'
ルートのget()
ハンドラーにブレークポイントを設定します。 -
Containers: Node.js Launch デバッガー構成が選択されていることを確認してください。
-
デバッグを開始します (F5 キーを使用)。
- サービスのイメージがビルドされます。
- サービスのコンテナーが実行されます。
- ブラウザーは、サービスコンテナーにマップされた (ランダムな) ポートに開きます。
- デバッガーは
index.js
のブレークポイントで停止します。
デバッガーはアプリケーションが起動した後にアタッチされるため、最初にブレークポイントが見逃される可能性があることに注意してください。2 回目の試行でデバッガーがブレークするのを確認するには、ブラウザーを更新する必要がある場合があります。
アプリケーションの実行を開始する前にデバッガーがアタッチされるのを待機するように構成するには、
tasks.json
内のdocker-run: debug
タスクで、node
オブジェクトの下の inspectMode プロパティをbreak
に設定します。
アプリケーションログを表示する
コンテナーで View Logs コマンドを使用して、VS Code でログを表示できます。
-
Container Explorer に移動します。
-
Containers ビューで、コンテナーを右クリックし、View Logs を選択します。
-
出力はターミナルに表示されます。
次のステップ
完了しました!コンテナの準備ができたので、次のことを行いたいかもしれません。