コンテナ内のNode.js

このガイドでは、以下の方法を学びます。

  • Express Node.jsサービスコンテナ用のDockerfileファイルを作成する
  • サービスのビルド、実行、および機能の検証
  • コンテナ内で実行中のサービスをデバッグする

前提条件

  • DockerおよびVS Code Container Tools拡張機能の両方が、概要で説明されている通りにインストールされている必要があります。
  • Node.js バージョン10以降

Express Node.jsアプリケーションの作成

  1. プロジェクト用のフォルダーを作成します。

  2. プロジェクトフォルダーで開発コマンドプロンプトを開き、プロジェクトを作成します。

    npx express-generator
    npm install
    

プロジェクトに Docker ファイルを追加する

  1. プロジェクトフォルダーを VS Code で開きます。

  2. コマンドパレット(⇧⌘P (Windows, Linux Ctrl+Shift+P))を開き、Containers: Add Docker Files to Workspace...コマンドを使用します。

    Add Dockerfile to a Node.js project

  3. アプリケーションプラットフォームの入力を求められたら、Node.jsを選択します。

  4. デフォルトのpackage.jsonファイルを選択します。

  5. アプリケーションポートの入力を求められたら、3000と入力します。

  6. Docker Composeファイルを含めるかどうかを求められたら、YesまたはNoを選択します。Composeは通常、複数のコンテナを同時に実行する場合に使用されます。

拡張機能はDockerfileファイルと.dockerignoreファイルを作成します。Docker Composeファイルを含めることを選択した場合は、docker-compose.ymldocker-compose.debug.ymlも生成されます。最後に、拡張機能は、コンテナをビルドおよび実行するための(デバッグ構成とリリース構成の両方での)VS Codeタスク.vscode/tasks.jsonに作成し、コンテナ内でサービスをデバッグするためのデバッグ起動構成.vscode/launch.jsonに作成します。

イメージへの環境変数の追加

Container Tools拡張機能は、IntelliSenseを使用してオートコンプリートやコンテキストヘルプを提供することで、Dockerfileの作成を支援します。この機能を体験するには、以下の手順に従ってサービスイメージに環境変数を追加してください。

  1. Dockerfileファイルを開きます。

  2. ENV命令を使用して、サービスコンテナイメージに環境変数を追加します。

    Add an environment variable to Docker image

    Container Tools拡張機能が、利用可能なすべてのDockerfile命令をリストアップし、構文を説明していることに注目してください。

    Container Tools拡張機能は、Dockerfilebaseステージを使用して、サービスのデバッグ用コンテナイメージを作成します。この変数をデバッグ版とリリース版の両方のコンテナイメージで利用できるようにするには、環境変数の定義をbaseステージに記述してください。

  3. Dockerfileファイルを保存します。

サービスのローカル実行

  1. ターミナル(⌃` (Windows, Linux Ctrl+`))を開きます。

  2. npm run startと入力してアプリケーションを起動します。

    > express-app@0.0.0 start /Users/user/code/scratch/express-app
    > node ./bin/www
    
  3. Webブラウザーを開き、https://:3000にアクセスします。以下のようなページが表示されるはずです。

    Application page in browser

  4. テストが完了したら、ターミナルでCtrl+Cを入力します。

サービスイメージのビルド

  1. コマンドパレット(⇧⌘P (Windows, Linux Ctrl+Shift+P))を開き、Container Images: Build Image...コマンドを選択します。

  2. Container Explorerを開き、新しいイメージがImagesビューに表示されていることを確認します。

    Verify Docker image exists

サービスコンテナの実行

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

    Running service container

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

    Application page in browser

  3. テストが完了したら、Containersビューでコンテナを右クリックし、Stopを選択します。

サービスコンテナ内でのデバッグ

Container Tools拡張機能がアプリケーションにファイルを追加する際、コンテナ内で実行されているサービスをデバッグするためのVS Codeデバッガー構成.vscode/launch.jsonに追加されます。拡張機能はサービスが使用するプロトコルとポートを検出し、ブラウザーをそのサービスへ誘導します。

  1. routes/index.js'/'ルートに対するget()ハンドラーにブレークポイントを設定します。

  2. Containers: Node.js Launchデバッガー構成が選択されていることを確認します。

    Selected debug configuration

  3. デバッグを開始します(F5キーを使用します)。

    • サービスのイメージがビルドされます。
    • サービスのコンテナが実行されます。
    • ブラウザーが開き、サービスコンテナにマップされた(ランダムな)ポートへ接続されます。
    • デバッガーがindex.jsのブレークポイントで停止します。

    デバッガーはアプリケーションが開始された*後*にアタッチされるため、初回はブレークポイントを通過してしまう可能性があることに注意してください。2回目にデバッガーが停止する様子を確認するには、ブラウザーを更新する必要がある場合があります。

    tasks.jsonnodeオブジェクト下にあるdocker-run: debugタスクのinspectModeプロパティをbreakに設定することで、デバッガーがアタッチされるまで実行を開始しないようにアプリケーションを構成できます。

アプリケーションログの表示

コンテナに対するView Logsコマンドを使用することで、VS Codeでログを表示できます。

  1. Container Explorerへ移動します。

  2. Containersビューで、対象のコンテナを右クリックしてView Logsを選択します。

    Screenshot of logs in the terminal

  3. 出力がターミナルに表示されます。

次のステップ

完了です!コンテナーが準備できたので、次のことができます。

© . This site is unofficial and not affiliated with Microsoft.