ホームページ >バックエンド開発 >PHPチュートリアル >Docker Compose、Nginx、MariaDB を使用してスケーラブルな PHP アプリケーション クラスターを構築する

Docker Compose、Nginx、MariaDB を使用してスケーラブルな PHP アプリケーション クラスターを構築する

WBOY
WBOYオリジナル
2023-10-12 13:39:17588ブラウズ

使用Docker Compose、Nginx和MariaDB构建可伸缩的PHP应用程序集群

Docker Compose、Nginx、MariaDB を使用してスケーラブルな PHP アプリケーション クラスターを構築する

はじめに:
最新のアプリケーション開発では、スケーラブルなアプリケーションを構築する プログラムのクラスタリングは非常に重要です。 Docker Compose、Nginx、MariaDB を使用すると、アプリケーションに高可用性と柔軟性を提供するスケーラブルな PHP アプリケーション クラスターを簡単に構築できます。この記事では、これらのツールを使用して、シンプルかつ強力な PHP アプリケーションのクラスターを構築する方法を検討し、具体的なコード例を示します。

パート 1: 環境セットアップ

始める前に、Docker と Docker Compose がインストールされていることを確認する必要があります。開発環境でターミナルを開き、次のコマンドを実行して、正しくインストールされているかどうかを確認します。

$ docker --version
$ docker-compose --version

対応するバージョン情報が返された場合、Docker と Docker Compose は正常にインストールされています。次に、新しいプロジェクト ディレクトリを作成し、その中に docker-compose.yml ファイルを作成します。

$ mkdir my-php-cluster
$ cd my-php-cluster
$ touch docker-compose.yml

パート 2: Docker Compose ファイルの作成
次に、docker-compose.yml ファイルでアプリケーション クラスターの構成を定義します。この構成には、PHP、Nginx、および MariaDB のサービス定義が含まれます。基本的な docker-compose.yml ファイルの例を次に示します。

version: '3'

services:
  php:
    build:
      context: .
      dockerfile: Dockerfile.php
    restart: always
    ports:
      - "8000:80"
  nginx:
    build:
      context: .
      dockerfile: Dockerfile.nginx
    restart: always
    ports:
      - "80:80"
    depends_on:
      - php
  db:
    image: mariadb
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: secret

この例では、php、nginx、db の 3 つのサービスを定義します。 php サービスは、PHP を含む Docker イメージを構築し、ポートをホストのポート 8000 にマップします。 nginx サービスは、Nginx を含む Docker イメージを構築し、ポートをホストのポート 80 にマップします。 db サービスは、MariaDB によって公式に提供される Docker イメージを使用し、ポートをホストの 3306 ポートにマップします。最後に、root パスワードを設定するための db サービスの環境変数も指定します。

パート 3: Dockerfile の作成
イメージを正常に構築するには、Dockerfile も作成する必要があります。

まず、Dockerfile.php という名前のファイルを作成し、次の内容をファイルにコピーします。

FROM php:7.4-fpm

WORKDIR /var/www/html

RUN apt-get update && apt-get install -y 
    libzip-dev 
    zip 
    unzip 
    && docker-php-ext-install zip

COPY . .

RUN composer install --no-dev

この Dockerfile は、基本イメージとして公式の PHP 7.4 FPM イメージを使用し、追加の依存関係もいくつか使用します。 RUN コマンド経由でインストールされます。次に、アプリケーション ディレクトリ全体をコンテナの /var/www/html ディレクトリにコピーし、composer install コマンドを実行して PHP の依存関係をインストールしました。

次に、Dockerfile.nginx という名前のファイルを作成し、次の内容をファイルにコピーします。

FROM nginx:latest

COPY nginx.conf /etc/nginx/nginx.conf

この Dockerfile は、最新の Nginx 公式イメージをベース イメージとして使用し、カスタマイズされた nginx をコピーします。 .conf ファイルをコンテナの /etc/nginx/ ディレクトリにコピーします。

パート 4: Nginx 構成ファイルを作成する
Dockerfile では、nginx.conf という名前の構成ファイルについて説明しました。次に、nginx.conf というファイルを作成し、次の内容をファイルにコピーします。

events {}

http {
  upstream php {
    server php:9000;
  }

  server {
    listen 80;

    location / {
      proxy_pass http://php;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
    }
  }
}

この nginx.conf 構成ファイルは、php サービスの 9000 ポートへのリクエストをプロキシする php という名前のアップストリーム サーバーを定義します。 。次に、ポート 80 でリッスンし、すべてのリクエストを PHP アップストリーム サーバーにプロキシするサーバー ブロックを定義しました。

パート 5: アプリケーション クラスターの実行
すべての構成が完了したので、docker-compose up コマンドを実行してアプリケーション クラスターを開始できます。

ターミナルで、プロジェクト ディレクトリに入り、次のコマンドを実行します。

$ docker-compose up -d

上記のコマンドは、バックグラウンドでアプリケーション クラスターを起動します。すべてのサービスが正常に開始されるまで、しばらくお待ちください。

パート 6: アプリケーション クラスターのテスト
アプリケーション クラスターが正常に起動したら、ブラウザーから http://localhost にアクセスしてテストできます。

ブラウザに http://localhost と入力し、Enter キーを押します。すべてが正常であれば、アプリケーションが実行されていることが確認できるはずです。

パート 7: アプリケーション クラスターのスケーリング
Docker Compose のスケール機能を使用すると、アプリケーション クラスターを簡単にスケーリングできます。

php サービスのインスタンスの数を増やしたいとします。次のコマンドを実行できます:

$ docker-compose up -d --scale php=3

上記のコマンドは、アプリケーション クラスターの水平方向の拡張を実現するために 3 つの php インスタンスを開始します。 。

結論:
Docker Compose、Nginx、MariaDB を使用すると、スケーラブルな PHP アプリケーション クラスターを簡単に構築できます。この記事では、開始するための基本的な例と詳細なコード例を示します。この記事が役に立ち、より強力なアプリケーション クラスターを構築するきっかけになったことを願っています。

以上がDocker Compose、Nginx、MariaDB を使用してスケーラブルな PHP アプリケーション クラスターを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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