ホームページ  >  記事  >  ウェブフロントエンド  >  Express.js を使用した Docker コンテナでの Web 開発

Express.js を使用した Docker コンテナでの Web 開発

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-07 15:55:03138ブラウズ

Web Development in Docker Containers Using Express.js

今日のペースの速い開発環境において、コンテナ化は Web 開発者にとって革新的なアプローチとして浮上し、一貫性があり、移植可能で、管理が容易な環境を提供します。最も人気のあるコンテナ化プラットフォームである Docker を使用すると、開発者はコンテナを簡単に作成および管理できるため、開発と展開がよりスムーズになります。 Docker と Express.js などの Node.js フレームワークを組み合わせることで、Web 開発にさらなる機敏性がもたらされ、開発者は Web アプリケーションを簡単に作成、テスト、デプロイできるようになります。

この記事では、Web 開発にもたらす利点に焦点を当てながら、Docker コンテナ内で Express.js アプリケーションを設定および開発する方法を検討します。

Web 開発に Docker を使用する理由

Docker はアプリケーションの依存関係をコンテナー内にカプセル化します。これは次のことを意味します。

  • 環境間の一貫性: Docker コンテナは、Docker がインストールされているシステム上で同じように実行され、「私のマシンでは動作する」という問題が解消されます。
  • 分離: Docker はアプリケーションに分離された環境を提供し、他のアプリケーションに干渉しないようにします。
  • スケーラビリティとデプロイメント: コンテナを使用すると、スケーリングとデプロイメントが容易になり、アプリケーションを簡単に水平方向に拡張できます。

Express.js を使用した Web 開発の場合、Docker は Node.js とその他の依存関係 (データベースやライブラリなど) がホスト システムとは別の環境内で正しく構成されていることを確認します。

Docker での Express.js アプリケーションのセットアップ

Docker コンテナ内で Express.js アプリケーションをセットアップして実行するために必要な手順を詳しく見てみましょう。

ステップ 1: Express.js アプリケーションを初期化する

まず、基本的な Express.js アプリケーションを作成します。グローバルにインストールしていない場合は、次を実行できます:

npx express-generator myapp
cd myapp

これにより、Express.js アプリの基本的なフォルダー構造といくつかのデフォルト ファイルが作成されます。次に、必要な依存関係をインストールします:

npm install

ステップ 2: Dockerfile を作成する

Dockerfile は、アプリケーションのセットアップと実行に必要な環境と手順を定義します。 Express.js アプリケーションの Dockerfile の例を次に示します:

# Use an official Node.js image as the base
FROM node:latest AS development

# Create and set the working directory inside the container
WORKDIR /app

# Copy package.json and package-lock.json files to the container
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy the entire application code to the container
COPY . .

# Expose the port the app runs on
EXPOSE 3000

# Run the application
CMD ["npm", "start"]

ステップ 3: Docker Compose ファイルを作成する (オプション)

アプリケーションに複数のサービス (データベースなど) がある場合、docker-compose.yml はそれらのサービスの定義と管理に役立ちます。以下は docker-compose.yml ファイルのサンプルです:

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - NODE_ENV=development

ステップ 4: Docker コンテナを構築して実行する

アプリケーションのコンテナを作成するには、アプリケーションのルート ディレクトリ (Dockerfile がある場所) でターミナルを開き、次のコマンドを実行します。

npx express-generator myapp
cd myapp

次に、コンテナを実行するには、以下を使用します:

npm install

これで、アプリケーションは http://localhost:3000 でアクセスできるようになります。

ステップ 5: ライブ リロードを使用した開発

デフォルトでは、Docker はライブ リロード (コードの変更が自動的に反映される) をサポートしていません。ただし、ファイルの変更を監視し、サーバーを自動的に再起動するツールである nodemon を使用すると、これを実現できます。

まず、nodemon を開発依存関係としてインストールします。

# Use an official Node.js image as the base
FROM node:latest AS development

# Create and set the working directory inside the container
WORKDIR /app

# Copy package.json and package-lock.json files to the container
COPY package*.json ./

# Install dependencies
RUN npm install

# Copy the entire application code to the container
COPY . .

# Expose the port the app runs on
EXPOSE 3000

# Run the application
CMD ["npm", "start"]

次に、Dockerfile を更新して NODE_ENV を開発に設定し、開始コマンドを更新します。

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
      - /app/node_modules
    environment:
      - NODE_ENV=development

または、docker-compose.yml を使用している場合は、その中でコマンドを直接指定できます。

docker build -t express-app .

この設定によりライブ リロードが可能になります。これは時間を節約し、生産性を向上させるため、開発中に非常に有益です。

ステップ 6: Docker ボリュームを使用した依存関係の管理

依存関係が毎回再構築される問題を回避するには、Docker ボリュームを使用してローカル ファイル システムのソース コードをコンテナにマウントします。

docker-compose.yml 内:

docker run -p 3000:3000 express-app

この構成はホストとコンテナーの間でコードを同期しますが、node_modules フォルダーはオーバーライドされません。

ステップ 7: Docker 内でのデバッグ

Docker には、デバッグ用のさまざまなオプションが用意されています。 DEBUG フラグをアプリケーションに追加してログの詳細度を高めたり、Docker 独自のログおよび監視コマンドを使用したりできます。

npm install --save-dev nodemon

ステップ 8: 実稼働用に Docker 化する

本番環境に移行する場合、次のような最適化のための追加手順があります。

  • マルチステージビルドを使用してイメージサイズを削減します。
  • 環境固有の構成をセットアップします。
  • 脆弱性のスキャンなどのセキュリティ対策を追加します。 マルチステージビルドの Dockerfile の例:
# Install nodemon globally
RUN npm install -g nodemon

# Run the application using nodemon
CMD ["nodemon", "bin/www"]

Docker で Express.js を使用して開発する利点
Docker で Express.js アプリケーションを開発することには、次のような大きな利点があります。

  • プラットフォームの一貫性: Docker コンテナは、開発から運用までのすべての段階で環境を標準化します。
  • 簡素化された依存関係: 依存関係をカプセル化することで、ローカル マシンへの複雑なインストールを排除できます。 迅速なスケーリング: コンテナーを使用すると、追加のインスタンスをデプロイすることでアプリケーションを水平方向にスケーリングできます。 楽なコラボレーション: Dockerfile または docker-compose.yml を共有すると、チームメイトが正確な環境で作業できるようになります。 ## ベストプラクティス
  • Docker イメージを小さく保つ: マルチステージ ビルドを使用してイメージ サイズを最小限に抑え、パフォーマンスを向上させます。 構成に環境変数を使用する: コンテナーの環境に依存しないように、ハードコーディング構成を避けます。
  • ボリュームの活用: データの保存や開発中のコードの同期に Docker ボリュームを利用します。
  • CI/CD による自動化: Docker を CI/CD パイプラインに組み込み、環境全体で一貫性のある自動デプロイを実現します。 ## 結論 Express.js アプリケーションを Docker 化すると、Web 開発にスケーラブルで堅牢なソリューションが提供されます。 Docker を使用すると、環境の制御が向上し、依存関係の管理が簡素化され、コラボレーションが向上します。これらはすべて、最新の Web 開発にとって重要です。単純なアプリケーションで作業している場合でも、複数のサービスを備えた複雑なシステムで作業している場合でも、Docker はワークフローを合理化し、本番環境でプロジェクトを成功に導くためのセットアップを行うツールを提供します。

今すぐ Docker と Express.js を使い始めて、開発エクスペリエンスがどのように変化するかを確認してください!

以上がExpress.js を使用した Docker コンテナでの Web 開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。