プログラミング

Node.js と Docker Compose 設定ガイド

Node.js アプリケーションを Docker Compose を使用してコンテナベースのワークフローを構築する方法について、完全かつ包括的なガイドを以下に示します。このガイドでは、Docker と Docker Compose を利用して、Node.js アプリケーションの開発環境を設定する手順を詳しく解説します。

1. 前提条件のインストール

最初に、Docker と Docker Compose をインストールする必要があります。以下の手順でそれぞれをインストールします。

Docker のインストール

  • Docker の公式サイト (https://www.docker.com/get-started) から最新の Docker をインストールします。

  • インストールが完了したら、ターミナルで以下のコマンドを実行して、Docker が正常にインストールされたか確認します。

bash
docker --version

Docker Compose のインストール

Docker Compose は、複数のコンテナを一度に定義し、管理するためのツールです。最新の Docker Compose をインストールします。

bash
docker-compose --version

もしインストールされていなければ、公式サイト (https://docs.docker.com/compose/install/) に従ってインストールしてください。

2. プロジェクトのセットアップ

Node.js アプリケーションを作成し、そのアプリケーションを Docker コンテナで動かすために、プロジェクトフォルダを作成します。

1. Node.js プロジェクトの作成

まず、新しいディレクトリを作成し、その中に Node.js プロジェクトを初期化します。

bash
mkdir my-node-app cd my-node-app npm init -y

次に、必要なパッケージをインストールします。この例では、express を使用してシンプルな Web サーバーを作成します。

bash
npm install express

2. アプリケーションコードの作成

index.js という名前で、以下の内容の Node.js アプリケーションを作成します。

javascript
const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Hello from Node.js with Docker!'); }); app.listen(port, () => { console.log(`Server running at http://localhost:${port}`); });

このアプリケーションは、/ パスにアクセスすると “Hello from Node.js with Docker!” というメッセージを返します。

3. Dockerfile の作成

次に、アプリケーションを Docker コンテナ内で動かすために、Dockerfile を作成します。このファイルは、Node.js アプリケーションをコンテナ内で動かすための手順を定義します。

dockerfile
# Node.js の公式イメージを使用 FROM node:14 # 作業ディレクトリを設定 WORKDIR /usr/src/app # パッケージ情報をコンテナ内にコピー COPY package*.json ./ # 必要なパッケージをインストール RUN npm install # アプリケーションのソースコードをコピー COPY . . # アプリケーションを実行 CMD ["node", "index.js"] # コンテナがリッスンするポートを指定 EXPOSE 3000

4. Docker Compose の設定

複数のコンテナを一度に管理するために、Docker Compose を使用します。docker-compose.yml ファイルをプロジェクトルートに作成し、以下の内容で記述します。

yaml
version: '3' services: web: build: . ports: - "3000:3000"

この設定では、web というサービスを定義しており、現在のディレクトリ (.) から Docker イメージをビルドし、ホストのポート 3000 とコンテナのポート 3000 をバインドしています。

5. コンテナのビルドと起動

次に、Docker Compose を使用してアプリケーションのコンテナをビルドし、起動します。

bash
docker-compose up --build

このコマンドは、docker-compose.yml ファイルの指示に従ってコンテナをビルドし、実行します。ビルドが完了したら、アプリケーションがポート 3000 で実行されていることが確認できます。

ブラウザで http://localhost:3000 にアクセスすると、”Hello from Node.js with Docker!” というメッセージが表示されるはずです。

6. コンテナの停止

開発が完了したら、以下のコマンドでコンテナを停止します。

bash
docker-compose down

これにより、すべてのコンテナが停止し、ネットワークも削除されます。

7. より高度な設定

上記の手順では、基本的な Node.js アプリケーションを Docker コンテナで動かす方法を説明しましたが、さらに複雑な設定を追加することができます。

1. 環境変数の使用

Docker Compose では、環境変数を使用してコンテナに設定を渡すことができます。例えば、docker-compose.yml に以下のように環境変数を追加できます。

yaml
services: web: build: . ports: - "3000:3000" environment: - NODE_ENV=production

これにより、アプリケーション内で process.env.NODE_ENV を使用して、環境設定を読み取ることができます。

2. 複数のサービスの構成

例えば、Node.js アプリケーションとデータベース(例えば MongoDB)を一緒に運用する場合、docker-compose.yml にサービスを追加します。

yaml
version: '3' services: web: build: . ports: - "3000:3000" environment: - NODE_ENV=production db: image: mongo volumes: - ./data/db:/data/db

これで、db サービスとして MongoDB コンテナが実行され、Node.js アプリケーションがそのデータベースにアクセスできるようになります。

8. デバッグとログの確認

コンテナのログを確認するには、以下のコマンドを使用します。

bash
docker-compose logs

特定のサービスのログを確認するには、以下のようにサービス名を指定します。

bash
docker-compose logs web

これにより、web サービスのコンテナから出力されるログを確認できます。

結論

このガイドでは、Node.js アプリケーションを Docker Compose を使用してコンテナベースで実行するための基本的な手順を説明しました。Docker と Docker Compose を利用することで、アプリケーションの開発環境を簡単に構築し、複数のコンテナを効率的に管理できるようになります。さらに、環境変数や複数のサービスを使用することで、より複雑なアプリケーションを構築することも可能です。

Back to top button