WebStorm 2026.1 Help

チュートリアル: Node.js Express アプリケーションを Docker 化する

Docker を使用すると、アプリケーションを特定のランタイム環境やその他の必要な依存関係とともにイメージにパッケージ化できます。 その後、そのイメージからコンテナーを実行し、アプリケーションがその環境でどのように動作するかを確認できます。 これをアプリケーションの Docker 化と呼びます。

このチュートリアルでは、Node.js 22 と Node.js Express アプリケーションを使用して Docker イメージをビルドするための Dockerfile を作成する方法について説明します。 また、このイメージを他のユーザーと共有し、そこから Docker コンテナーを実行する方法も説明します。

例 1: シンプルな Node.js アプリケーションを Docker 化する

シンプルな Node.js Express アプリケーションから始めましょう。 このアプリケーションは、 Hello World! を返し、コンソールに Example app listening on port 3000! を出力する hello_express.js ファイルで構成されています。

Node.js で空のプロジェクトを作成する

  1. Welcome 画面新規プロジェクト をクリックするか、メインメニューから ファイル | 新規 | プロジェクト を選択してください。

  2. 開いたダイアログで、左側のペインで Node.js を選択します。

  3. アプリケーションの場所と名前(例: hello_world_docker )を指定します。

  4. 使用するローカル Node.js ランタイムを指定します。 推奨インストールを承認するか、リストから別のものを選択するか、まだマシンに Node.js がインストールされていない場合は ダウンロード をクリックしてください。 詳しくは 新しい Node.js アプリケーションを作成するを参照してください。

    Node.js で空のプロジェクトを作成する
  5. 作成 をクリックしてください。

アプリケーションを実装する

  1. アプリケーション用に別のフォルダーを作成しましょう。これにより、後でローカルフォルダーをコンテナー内のフォルダーにマッピングしやすくなります。

    そのためには、 プロジェクト ツールウィンドウ Alt+1 を開き、プロジェクトフォルダーを右クリックし、コンテキストメニューから 新規 を選択し、 ディレクトリ を選択します。 表示されるポップアップダイアログで、フォルダー名(例: app )を指定します。

    アプリケーションフォルダーを作成する
  2. ここで、アプリケーションのコードを配置するための JavaScript ファイルを作成します。

    app フォルダーのコンテキストメニューから、コンテキストメニューから 新規 を選択し、次に JavaScript ファイル を選択します。

    JavaScript ファイルの作成、コンテキストメニュー

    表示されるポップアップダイアログで、ファイル名 (例: hello_express.js ) を指定します。

    JavaScript ファイルを作成する
  3. 新しく作成された hello_express.js ファイルをエディターで開き、次のコードを入力します。

    const express = require('express'); const app = express(); app.get('/', function(req, res) { res.send('Hello World!') }); app.listen(3000,function() { console.log('Example app listening on port 3000!') });
  4. ご想像のとおり、 express 参照は解決されておらず、エラーとしてハイライト表示されています。 ただし、参照にマウスオーバーすると、WebStorm がクイックフィックスを提案します:

    Express がインストールされていません - クイックフィックスが提案されます

    「エクスプレス」をインストールする リンクをクリックすると、 package.json ファイルに express が追加され、インストールされます。

    package.json - エクスプレスインストール

アプリケーションをローカルで実行する

アプリケーションをローカルで実行して、期待どおりに動作するか確認してみましょう。

  • hello_express.js ファイルを開き、エディタータブ内の任意の場所を右クリックし、コンテキストメニューから 実行 'hello_express.js' を選択します。

    アプリケーションをローカルで実行する

    実行 ツールウィンドウが開き、 Example app listening on port 3000! が表示されます。

    http://localhost:3000 でブラウザーを開くと、予想どおりページに Hello World! が表示されます。

    アプリケーションはローカルで実行されています

Dockerfile を作成する

  1. プロジェクトフォルダーのコンテキストメニューから、 新規 を選択し、次に Dockerfile を選択します。

    Dockerfile を作成する - コンテキストメニュー
  2. 新しく作成された Dockerfile を開き、次のコードを入力します。

    FROM node:22-alpine WORKDIR /tmp COPY package*.json . RUN npm ci --omit=dev COPY ./app/ ./app/ CMD ["node","./app/hello_express.js"]

    この Dockerfile には、 Docker Hub(英語)node:22 イメージに基づいてイメージを構築するための手順が含まれています。

    このイメージからコンテナーを実行すると、Docker はコンテナー内の /app/ ディレクトリの内容を /tmp/app/ ディレクトリにコピーします(この例では、 /app/ ディレクトリに hello_express.js ファイルが含まれています)。 package.json ファイルは /tmp/ にコピーされます。

    次に、Docker は現在の作業ディレクトリを /tmp に設定し、 node ./app/hello_express.js を実行します。 その結果、コンテナーログには Example app listening on port 3000! が表示されます。

Dockerfile からイメージをビルドして実行する

  1. エディターで Dockerfile を開き、 Run on Docker アイコン ガターアイコンをクリックして、 実行 を選択してから、 'Docker' で実行する を選択します。

    エディターから Dockerfile を実行する
  2. WebStorm は Dockerfile 実行構成 を作成し、Dockerfile からイメージをビルドし、そのイメージに基づいてコンテナーを実行します。

    サービスツールウィンドウ、ログタブ

    プロセス全体を確認するには、 サービス ツールウィンドウの ビルドログ タブを開いてください。

    完全なログを表示
  3. たとえば、Node.js をインストールしなくても、アプリケーションがどのように実行されるかを正確に示すために、イメージを他のユーザーと共有できます (Docker のみが必要です)。

これで、コンテナー内で Express アプリが実行状態になり、ポート 3000 をリッスンするようになりました。 しかし、外部から接続することはできません。 コンテナーのポートを公開し、ホストのポートにバインドする必要があります。

コンテナーのポートを公開する

  • Dockerfile を開き、次の行を追加します。

    EXPOSE 3000

    これで、Dockerfile は次のようになります。

    FROM node:22-alpine WORKDIR /tmp COPY package*.json . RUN npm ci --omit=dev COPY ./app/ ./app/ EXPOSE 3000 CMD ["node","./app/hello_express.js"]

コンテナーのポートをホストのポートにバインドする

ポートバインディングは次の 2 つの方法で実行できます。

  • Dockerfile を実行すると、WebStorm により作成される実行 / デバッグ構成内で。 この場合は、コンテナーを再起動する必要があります

  • 実行中のコンテナー内。

実行 / デバッグ構成でポートをバインドする

上記のように Dockerfile を実行すると、WebStormは Dockerfile型の 一時的な実行 / デバッグ構成をデフォルト名 Dockerfileで作成します。 この設定は、使用した Dockerfile の設定に基づいており、ポートバインディングに関する情報は含まれていません。

  1. メインツールバーの ウィジェットを実行する で、自動生成された Dockerfile 実行構成を選択し、 the More Actions icon をクリックして、 編集 を選択します。

    実行ウィジェットから Dockerfile 実行構成を開く
  2. 開いた 実行 / デバッグ構成 ダイアログで、左側のペインで Dockerfile 実行構成を選択し、ツールバーの the Save Configuration icon をクリックします。

    一時的な Dockerfile 構成を保存する
  3. 右側のペインで、 オプションを変更 をクリックし、 バインドポート を選択します。

    Dockerfile 構成 - バインドポート
  4. バインドポート フィールドで、 参照ボタン をクリックし、開いた ポートバインディング ダイアログで 追加ボタン をクリックします。

    コンテナーポート フィールドで、アプリケーションがコンテナー内で稼働しているポートを指定してください。この例では 3000 です。

    ホストポート フィールドで、コンテナーの外部からアプリケーションにアクセスできるポート (例: 3001) を指定します。

    コンテナーポートとホストポートを指定する

    OK をクリックすると、ダイアログが閉じて、 バインドポート フィールドでポートバインディングが指定されている 実行 / デバッグ構成 ダイアログに戻ります。

    港湾

実行中のコンテナーのポートをバインドする

  1. 上記の説明に従ってアプリケーションを実行します。

  2. ダッシュボード タブで、 ポート エリアの 追加 をクリックし、コンテナーポートを指定します。例では 3000 です。

    バインドポート - コンテナーポートを指定する

    オプションを変更 をクリックし、 ホストポート の横にチェックを入れ、追加されたフィールドにホストポートを指定します。 この例では、 3001 とします。

    実行中のコンテナーのポートをバインドする

ポートバインディングをどのように指定したかに関係なく、アプリケーションを http ://localhost:30001 で開くことができるようになりました。

ポートがバインドされ、アプリケーションはブラウザーで 3001 で開かれます

例 2: 複雑なフォルダー構造を持つ Node.js Express アプリケーションを Docker 化する

この例では、より複雑なフォルダー構造を持つ Express アプリケーションを使用します。

Node.js Express アプリケーションを作成する

  1. Welcome 画面新規プロジェクト をクリックするか、メインメニューから ファイル | 新規 | プロジェクト を選択してください。

  2. 開いたダイアログで、左側のペインで Express を選択します。

  3. アプリケーションの場所と名前(例: node_express_docker )を指定します。

  4. 使用するローカル Node.js ランタイムを指定します。 推奨インストールを承認するか、リストから別のものを選択するか、まだマシンに Node.js がインストールされていない場合は ダウンロード をクリックしてください。 詳しくは 新しい Node.js アプリケーションを作成するを参照してください。

    Node.js Express アプリケーションを作成する
  5. ビューエンジン および スタイルシートエンジン のデフォルト設定を受け入れます。

  6. 作成 をクリックしてください。

WebStormはシンプルな Express アプリケーションを生成し、 package.json に記載された依存関係をインストールします。

アプリケーションをローカルで実行する

自動生成されたアプリケーションが動作することを確認するために、まずはローカルで実行してみましょう。 WebStorm によって、 Node.jsタイプの bin/www実行 / デバッグ構成も生成されています。

  1. ツールバーの 実行 ウィジェットから bin/www 実行 / デバッグ構成を選択し、その横にある the Run 'bin/www' icon をクリックします。

    Express アプリケーションをローカルで実行する

    実行 ツールウィンドウが開き、アプリケーションの出力が表示されます。

    アプリケーション出力を含む実行ツールウィンドウ
  2. ブラウザーで http://localhost:3000 を開きます。 ページにウェルカムメッセージが表示されます。

    Express アプリケーションがブラウザーで開かれます
  3. ブラウザーを開かずに、コンソールでアプリケーションからのレスポンスを取得できるように、コードを少し変更してみましょう。 そのためには、 bin/www を開き、たとえば onListening() 関数内に次の行を追加します。

    console.log("Hello world");

    アプリケーションを再実行すると、 実行 ツールウィンドウは次のようになります。

    実行ツールウィンドウの Hello world

Dockerfile を作成する

  1. プロジェクト ツールウィンドウで、プロジェクト名を右クリックし、 新規 をポイントして、 ファイル をクリックします。

  2. 新規ファイル… ダイアログで、 Dockerfile と入力し、 Enter を押します。

  3. 次のコードを新しい Dockerfile に貼り付けます:

    FROM node:22-alpine WORKDIR /tmp COPY package*.json . RUN npm ci --omit=dev COPY ./bin/ ./bin/ COPY ./public/ ./public/ COPY ./routes/ ./routes/ COPY ./views/ ./views/ COPY ./app.js . CMD ["npm","start"]

    ご覧のとおり、ここではローカルフォルダーを段階的に個別にコピーします。

  4. Dockerfile EXPOSE 3000 を追加してコンテナーポートを公開しましょう。

    FROM node:22-alpine WORKDIR /tmp COPY package*.json . RUN npm ci --omit=dev COPY ./bin/ ./bin/ COPY ./public/ ./public/ COPY ./routes/ ./routes/ COPY ./views/ ./views/ COPY ./app.js . EXPOSE 3000 CMD ["npm","start"]

アプリケーションをデプロイして実行する

  • アプリケーションをデプロイして実行するには、 Run on Docker アイコン ガターアイコンをクリックし、 実行 を選択してから 'Docker' で実行する を選択します。 これで、アプリケーションはコンテナー内で実行されます。

    アプリケーションは docker container に導入され、実行されています。

バインドポート

アプリケーションを Docker コンテナーの外部からアクセスできるようにするには、コンテナーポート (この例では 3000) をホスト上のポートにバインドする必要があります。

上記のように、実行中のコンテナー内または Dockerfile 実行 / デバッグ構成内でこれを実行できます。

  • ダッシュボード タブで、 ポート エリアの 追加 をクリックし、コンテナーポートを指定します。例では 3000 です。

    バインドポート - コンテナーポートを指定する

    オプションを変更 をクリックし、 ホストポート の横にチェックを入れ、追加されたフィールドにホストポートを指定します。 この例では、 3001 とします。

    実行中のコンテナーのポートをバインドする

ポートバインディングをどのように指定したかに関係なく、アプリケーションを http://localhost :30001 で開くことができるようになりました。

ポートがバインドされ、アプリケーションはブラウザーで 3001 で開かれます
2026 年 6 月 8 日