ホームページ >バックエンド開発 >PHPチュートリアル >Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションのデータ移行

Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションのデータ移行

王林
王林オリジナル
2023-10-12 10:33:57784ブラウズ

使用Docker Compose、Nginx和MariaDB实现PHP应用程序的数据迁移

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 アプリケーションの開発およびデプロイ時のデータ移行に役立つことを願っています。

参考資料:

  1. Docker Compose 公式ドキュメント: https://docs.docker.com/compose/
  2. Nginx 公式ドキュメント: https://nginx .org/en/docs/
  3. MariaDB 公式ドキュメント: https://mariadb.com/kb/en/documentation/

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

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