現在の位置: ホーム> 最新記事一覧> Docker ComposeとNginxを使用して、PHPアプリケーションの高可用性負荷分散展開を実現する

Docker ComposeとNginxを使用して、PHPアプリケーションの高可用性負荷分散展開を実現する

M66 2025-08-04

Docker ComposeとNginxを介したPHPアプリケーションの高可用性の展開

最新のWebアプリケーション開発では、高可用性が重要な要件の1つです。 Docker ComposeとNginxを使用すると、PHPアプリケーションの高可用性展開を簡単に実現でき、障害に遭遇したときにアプリケーションが依然として安定し、利用可能になるようにします。

主要なコンテナ化プラットフォームとして、Dockerは、独立したコンテナでのアプリケーションとその依存関係をカプセル化できます。 Docker Composeは、マルチコンテナーアプリケーションの定義と管理プロセスを簡素化します。

Nginxは、高性能Webサーバーであるだけでなく、広く使用されている逆プロキシサーバーでもあります。要求されたトラフィックを複数のバックエンドサーバーに配布し、負荷分散を実現し、システム全体の可用性とパフォーマンスを向上させることができます。

Docker Compose Serviceを定義します

まず、複数のアプリケーションインスタンスとnginxコンテナを定義するために、 docker-compose.ymlファイルを作成する必要があります。例の構成は次のとおりです。

バージョン: '3'
サービス:
  APP1:
    確立するてる:
      コンテクスト: 。
      dockerfile:dockerfile
    もう一度始めましょう:頻繁に
  App2:
    確立するてる:
      コンテクスト: 。
      dockerfile:dockerfile
    もう一度始めましょう:頻繁に
  nginx:
    画像:nginx
    ポート:
       - 「80:80」
    ボリューム:
       -  ./nginx.conf:/etc/nginx/nginx.conf
    もう一度始めましょう:頻繁に

この構成では、 App1App2は2つのPHPアプリケーションコンテナであり、同じまたは異なるバージョンのアプリケーションを実行して冗長性を実現できます。 Nginxコンテナは、トラフィックと負荷分散を受信する責任があります。

nginxロードバランシング構成

nginx.conf構成ファイルをNginxコンテナに作成してマウントします。構成の例は次のとおりです。

 http {
  上流のバックエンド{
    サーバーAPP1:8080;
    サーバーAPP2:8080;
  }

  サーバー{
    匂いく80;

    位置 / {
      proxy_pass http:// backend;
      proxy_set_headerホスト$ host;
      proxy_set_header x-real-ip $ remote_addr;
    }
  }
}

この構成は、2つのアプリケーションサーバーアドレスを含む上流の名前のバックエンドを定義します。 Nginxがリクエストを受け取った後、これら2つのPHPアプリケーションコンテナにトラフィックを割り当てて、負荷分散を達成します。

PHPアプリケーションコンテナ画像を構築します

実際のニーズに応じてdockerfileを書くと、コンテンツの例は次のとおりです。

 PHPから:7.4.15-fpm

workdir/var/www/html

コピー 。 。

CHMOD -R 755ストレージを実行します

cmd ["php-fpm"]

このDockerFileは、公式のPHP画像に基づいており、ワーキングディレクトリを設定し、アプリケーションコードをコピーし、ディレクトリアクセス許可を構成し、最後にPHP-FPMサービスを開始します。

高可用性PHPアプリケーションを起動します

構成が完了したら、次のコマンドですべてのコンテナを起動します。

 docker -compose up -d

このコマンドは、バックグラウンドで複数の定義されたコンテナを開始し、PHPアプリケーションをNginxを介して負荷バランスを整えて高可用性を実現できます。

要約します

Docker ComposeとNginxを通じて、PHPアプリケーション用の非常に利用可能な展開環境を正常に構築しました。マルチコンテナーアーキテクチャと負荷分散メカニズムにより、単一の障害およびサポートスケールアウトでアプリケーションが引き続き利用できるようになります。

この記事では、より複雑な生産環境アーキテクチャを実装するための実際のニーズに応じて、構成をさらにカスタマイズできる基本的な例を説明します。