Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションのデータ移行の実装
PHP アプリケーションの開発とデプロイのプロセスでは、データ移行が頻繁に発生します。つまり、既存のデータをある環境から別の環境に移行します。このプロセスを簡素化するために、Docker Compose、Nginx、MariaDB を使用してデータ移行を実装できます。この記事では、これらのツールの使用方法を詳しく紹介し、具体的なコード例を示します。
Docker Compose は、複数コンテナーの Docker アプリケーションを定義および実行するためのツールです。 YAML ファイルを使用して、アプリケーションのサービス、ネットワーク、ボリュームなどを構成します。 Nginx は、HTTP リクエストを適切な PHP コンテナに転送するために使用できる、一般的な Web サーバーおよびリバース プロキシ サーバーです。 MariaDB は、アプリケーション データの保存と管理に使用できるオープン ソースのリレーショナル データベース管理システムです。
まず、アプリケーションのサービスを定義するために Docker Compose ファイルを作成する必要があります。この例では、2 つのサービスを作成します。1 つは Nginx サーバー、もう 1 つは MariaDB データベースです。以下は、基本的な Docker Compose ファイルの例です。
version: '3' services: nginx: image: nginx ports: - 80:80 volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf mariadb: image: mariadb:10.5 environment: - MYSQL_ROOT_PASSWORD=secret volumes: - ./data:/var/lib/mysql
上の例では、nginx と mariadb という 2 つのサービスを定義しました。 nginx サービスは、公式の Nginx イメージを使用し、コンテナーのポート 80 をホストのポート 80 にマッピングします。また、カスタム nginx.conf 構成ファイルをコンテナの /etc/nginx/conf.d/default.conf
パスにマウントします。 mariadb サービスは MariaDB の公式イメージを使用し、環境変数を設定して root ユーザーのパスワードを設定します。データベース データを保存するディレクトリもマウントしました。
次に、nginx.conf 構成ファイルを作成して、Nginx サーバーの仮想ホストを定義する必要があります。この例では、すべての HTTP リクエストを php-app
という名前の PHP コンテナに転送するように Nginx を構成します。以下は、単純な nginx.conf 設定ファイルの例です。
server { listen 80; server_name localhost; location / { proxy_pass http://php-app; proxy_set_header Host $host; } }
上記の例では、php-app
という名前のプロキシ サーバーを定義し、転送されたすべての HTTP リクエストをこのサーバーにルーティングしました。また、proxy_set_header
ディレクティブを使用して、リクエストの Host ヘッダーをプロキシ サーバーに渡します。
これで、次のコマンドを使用してアプリケーションを開始できます:
docker-compose up -d
これにより、Nginx サービスと MariaDB サービスを含むコンテナーが作成され、開始されます。 http://localhost
にアクセスすると、Nginx が適切に動作していることを確認できます。すべてが正常であれば、PHP アプリケーションのホームページが表示されるはずです。
次に、データ移行の実装方法を紹介します。 MySQL データベース エクスポート ファイル backup.sql
がすでにあり、それを MariaDB コンテナにインポートしたいとします。以下は簡単なコマンドの例です:
docker exec -i <mariadb_container_name> mysql -uroot -p<password> < backup.sql
上記のコマンドでは、fb86933f67ce8306e5f20be52aba8df4
は MariaDB コンテナの名前、cb1ebc435675187bdcfb539b370c2e37
はroot ユーザーのパスワードを設定します。backup.sql
はデータベース エクスポート ファイルです。このコマンドは、データベースを MariaDB コンテナにインポートします。
定期的にデータのバックアップを実行したい場合は、単純なシェル スクリプトを使用してこれを実行できます。以下はバックアップ スクリプトの例です。
#!/bin/bash docker exec <mariadb_container_name> mysqldump -uroot -p<password> <database_name> > backup.sql
上記の例では、fb86933f67ce8306e5f20be52aba8df4
は MariaDB コンテナの名前、cb1ebc435675187bdcfb539b370c2e37
はroot ユーザーのパスワード、6b7267f525327f2a23dcb01791a146aa
は、バックアップするデータベースの名前です。このスクリプトは、backup.sql
という名前のデータベース バックアップ ファイルを作成します。
要約すると、PHP アプリケーションのデータ移行は、Docker Compose、Nginx、MariaDB を使用して簡単に実現できます。アプリケーションとデータベースをコンテナ化することで、アプリケーションを簡単にデプロイおよび移行し、Nginx 経由でリクエストを転送できます。この記事が、PHP アプリケーションの開発およびデプロイ時のデータ移行に役立つことを願っています。
参考資料:
以上がDocker Compose、Nginx、MariaDB を使用した PHP アプリケーションのデータ移行の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。