ホームページ  >  記事  >  バックエンド開発  >  Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションのグレースケール パブリッシュの実装

Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションのグレースケール パブリッシュの実装

WBOY
WBOYオリジナル
2023-10-12 09:31:41919ブラウズ

使用Docker Compose、Nginx和MariaDB实现PHP应用程序的灰度发布

Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションのグレースケール リリースの実装

グレースケール リリースは、ソフトウェア リリース戦略であり、新しいバージョンを段階的に導入して、アプリケーションに関連するリスクを軽減します。リリースします。実際のアプリケーションでは、Docker Compose を使用してコンテナ化されたアプリケーションを管理し、Nginx 負荷分散と MariaDB を組み合わせてグレースケール パブリッシングを実現できます。

Docker Compose は、複数コンテナーの Docker アプリケーションを定義および実行するためのツールです。これにより、YAML ファイルを使用して、アプリケーションのコンポーネント、ネットワーク構成、およびさまざまなコンポーネント間の関係を定義できるようになります。

まず、Docker Compose 構成ファイル docker-compose.yml を作成する必要があります。このファイルでは、Nginx、PHP、MariaDB の 3 つのサービスを定義する必要があります。

以下は、単純な PHP アプリケーションのグレースケール パブリッシュを実装するために使用される docker-compose.yml ファイルの例です。

version: '3.8'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - 80
    networks:
      - backend
      - frontend
  web_new:
    build:
      context: .
      dockerfile: Dockerfile-new
    ports:
      - 8080
    networks:
      - backend
      - frontend
  nginx:
    image: nginx:latest
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
    ports:
      - 8000:80
    networks:
      - frontend
  db:
    image: mariadb:latest
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=mydatabase
    networks:
      - backend

networks:
  backend:
  frontend:

この構成ファイルでは、2 つの Web サービス (web および web_new) を定義します。 ) は、PHP アプリケーションの 2 つの異なるバージョンに対応します。異なるポートを定義することでこれらを区別し、バックエンド ネットワークとフロントエンド ネットワークの両方に展開します。

また、nginx サービスを定義し、Nginx をロード バランサーとして使用し、ホストのポート 8000 にマッピングしました。 Nginx の負荷分散ルールを構成するには、nginx.conf ファイルをコンテナ内の /etc/nginx/nginx.conf の場所にマップする必要があります。

最後に、アプリケーションのデータを保存する MariaDB サービス (db) を定義します。環境変数を設定して、root ユーザーのパスワードとデフォルトのデータベースを構成します。

次に、nginx.conf ファイルを作成して、Nginx の負荷分散ルールを構成する必要があります。このファイルは、docker-compose.yml ファイルと同じディレクトリにある必要があります。 nginx.conf ファイルの例を次に示します。

worker_processes auto;
events {
    worker_connections 1024;
}

http {
    upstream app {
        zone blue 64k;
        server web:80;
        server web_new:8080 backup;
    }
    
    server {
        listen 80;
        
        location / {
            proxy_pass http://app;
        }
    }
}

この構成ファイルでは、最初に app という名前のアップストリーム ブロックを定義し、2 つのバックエンド サーバー (web および web_new) を指定します。この例では、バックアップ サーバーとして web_new を使用します。

次に、サーバー ブロックを定義し、ポート 80 でリッスンし、proxy_pass ディレクティブを通じてすべてのリクエストをアプリの上流ブロックに転送します。このように、Nginx は負荷分散ポリシーに従ってリクエストをさまざまなバックエンド サーバーに分散します。

これで、 docker-compose up コマンドを実行してアプリケーションを起動できます。これにより、docker-compose.yml ファイルに基づいて、対応するコンテナーが作成され、起動されます。

コンテナが正常に起動したら、http://localhost:8000 にアクセスして PHP アプリケーションにアクセスできます。 Nginx は、負荷分散ルールに従ってリクエストをさまざまなバックエンド サーバーに分散します。

グレースケール リリース プロセス中に、トラフィックを新しいバージョンの PHP アプリケーションに徐々に誘導できます。これは、nginx.conf ファイル内のアップストリーム ルールを徐々に変更することで実現できます。たとえば、最終的にすべてのトラフィックが新しいバージョンに送信されるまで、web_new サーバーの重みを徐々に増やすことができます。

Docker Compose、Nginx、MariaDB を使用すると、PHP アプリケーションのグレースケール パブリッシングを簡単に実装できます。このアプローチは、リリースに関連するリスクを軽減し、運用環境でアプリケーションの新しいバージョンのパフォーマンスと安定性を効果的にテストするのに役立ちます。

これは単なる例であり、実際の構成は特定のアプリケーションやニーズに応じて異なる場合があることに注意してください。実際のアプリケーションでは、より複雑な負荷分散戦略の使用、より多くの環境変数の構成、より多くのネットワーク構成の処理などが必要になる場合があります。

以上がDocker Compose、Nginx、MariaDB を使用した PHP アプリケーションのグレースケール パブリッシュの実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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