ホームページ > 記事 > ウェブフロントエンド > Express.js を使用した Docker コンテナでの Web 開発
今日のペースの速い開発環境において、コンテナ化は Web 開発者にとって革新的なアプローチとして浮上し、一貫性があり、移植可能で、管理が容易な環境を提供します。最も人気のあるコンテナ化プラットフォームである Docker を使用すると、開発者はコンテナを簡単に作成および管理できるため、開発と展開がよりスムーズになります。 Docker と Express.js などの Node.js フレームワークを組み合わせることで、Web 開発にさらなる機敏性がもたらされ、開発者は Web アプリケーションを簡単に作成、テスト、デプロイできるようになります。
この記事では、Web 開発にもたらす利点に焦点を当てながら、Docker コンテナ内で Express.js アプリケーションを設定および開発する方法を検討します。
Docker はアプリケーションの依存関係をコンテナー内にカプセル化します。これは次のことを意味します。
Express.js を使用した Web 開発の場合、Docker は Node.js とその他の依存関係 (データベースやライブラリなど) がホスト システムとは別の環境内で正しく構成されていることを確認します。
Docker コンテナ内で Express.js アプリケーションをセットアップして実行するために必要な手順を詳しく見てみましょう。
まず、基本的な Express.js アプリケーションを作成します。グローバルにインストールしていない場合は、次を実行できます:
npx express-generator myapp cd myapp
これにより、Express.js アプリの基本的なフォルダー構造といくつかのデフォルト ファイルが作成されます。次に、必要な依存関係をインストールします:
npm install
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"]
アプリケーションに複数のサービス (データベースなど) がある場合、docker-compose.yml はそれらのサービスの定義と管理に役立ちます。以下は docker-compose.yml ファイルのサンプルです:
services: app: build: . ports: - "3000:3000" volumes: - .:/app - /app/node_modules environment: - NODE_ENV=development
アプリケーションのコンテナを作成するには、アプリケーションのルート ディレクトリ (Dockerfile がある場所) でターミナルを開き、次のコマンドを実行します。
npx express-generator myapp cd myapp
次に、コンテナを実行するには、以下を使用します:
npm install
これで、アプリケーションは http://localhost:3000 でアクセスできるようになります。
デフォルトでは、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 .
この設定によりライブ リロードが可能になります。これは時間を節約し、生産性を向上させるため、開発中に非常に有益です。
依存関係が毎回再構築される問題を回避するには、Docker ボリュームを使用してローカル ファイル システムのソース コードをコンテナにマウントします。
docker-compose.yml 内:
docker run -p 3000:3000 express-app
この構成はホストとコンテナーの間でコードを同期しますが、node_modules フォルダーはオーバーライドされません。
Docker には、デバッグ用のさまざまなオプションが用意されています。 DEBUG フラグをアプリケーションに追加してログの詳細度を高めたり、Docker 独自のログおよび監視コマンドを使用したりできます。
npm install --save-dev nodemon
本番環境に移行する場合、次のような最適化のための追加手順があります。
# Install nodemon globally RUN npm install -g nodemon # Run the application using nodemon CMD ["nodemon", "bin/www"]
Docker で Express.js を使用して開発する利点
Docker で Express.js アプリケーションを開発することには、次のような大きな利点があります。
今すぐ Docker と Express.js を使い始めて、開発エクスペリエンスがどのように変化するかを確認してください!
以上がExpress.js を使用した Docker コンテナでの Web 開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。