最新のWebアプリケーション開発では、高可用性が重要な要件の1つです。 Docker ComposeとNginxを使用すると、PHPアプリケーションの高可用性展開を簡単に実現でき、障害に遭遇したときにアプリケーションが依然として安定し、利用可能になるようにします。
主要なコンテナ化プラットフォームとして、Dockerは、独立したコンテナでのアプリケーションとその依存関係をカプセル化できます。 Docker Composeは、マルチコンテナーアプリケーションの定義と管理プロセスを簡素化します。
Nginxは、高性能Webサーバーであるだけでなく、広く使用されている逆プロキシサーバーでもあります。要求されたトラフィックを複数のバックエンドサーバーに配布し、負荷分散を実現し、システム全体の可用性とパフォーマンスを向上させることができます。
まず、複数のアプリケーションインスタンスとnginxコンテナを定義するために、 docker-compose.ymlファイルを作成する必要があります。例の構成は次のとおりです。
バージョン: '3' サービス: APP1: 確立するてる: コンテクスト: 。 dockerfile:dockerfile もう一度始めましょう:頻繁に App2: 確立するてる: コンテクスト: 。 dockerfile:dockerfile もう一度始めましょう:頻繁に nginx: 画像:nginx ポート: - 「80:80」 ボリューム: - ./nginx.conf:/etc/nginx/nginx.conf もう一度始めましょう:頻繁に
この構成では、 App1とApp2は2つのPHPアプリケーションコンテナであり、同じまたは異なるバージョンのアプリケーションを実行して冗長性を実現できます。 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アプリケーションコンテナにトラフィックを割り当てて、負荷分散を達成します。
実際のニーズに応じてdockerfileを書くと、コンテンツの例は次のとおりです。
PHPから:7.4.15-fpm workdir/var/www/html コピー 。 。 CHMOD -R 755ストレージを実行します cmd ["php-fpm"]
このDockerFileは、公式のPHP画像に基づいており、ワーキングディレクトリを設定し、アプリケーションコードをコピーし、ディレクトリアクセス許可を構成し、最後にPHP-FPMサービスを開始します。
構成が完了したら、次のコマンドですべてのコンテナを起動します。
docker -compose up -d
このコマンドは、バックグラウンドで複数の定義されたコンテナを開始し、PHPアプリケーションをNginxを介して負荷バランスを整えて高可用性を実現できます。
Docker ComposeとNginxを通じて、PHPアプリケーション用の非常に利用可能な展開環境を正常に構築しました。マルチコンテナーアーキテクチャと負荷分散メカニズムにより、単一の障害およびサポートスケールアウトでアプリケーションが引き続き利用できるようになります。
この記事では、より複雑な生産環境アーキテクチャを実装するための実際のニーズに応じて、構成をさらにカスタマイズできる基本的な例を説明します。