Docker Compose、Nginx、MariaDB を介した PHP アプリケーションのデータのバックアップと復元
Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションのデータ バックアップと復元
クラウド コンピューティングとコンテナ化テクノロジの急速な発展により、ますます多くのアプリケーションが次のことを選択します。 Docker を使用してデプロイして実行します。 Docker エコシステムでは、Docker Compose は、単一の構成ファイルを通じて複数のコンテナーを定義および管理できる非常に人気のあるツールです。
この記事では、Docker Compose、Nginx、MariaDB を使用して、PHP アプリケーションのデータのバックアップと復元を実装する方法を紹介します。サンプル プロジェクトを使用してこのプロセスを示します。
サンプル プロジェクトの構造は次のとおりです。
. ├── docker-compose.yml ├── nginx │ └── default.conf ├── mariadb │ ├── Dockerfile │ └── init.sql └── php ├── Dockerfile └── index.php
まず、プロジェクト全体のコンテナ構成を定義する docker-compose.yml
ファイルを作成する必要があります。サンプル構成は次のとおりです。
version: '3' services: nginx: image: nginx:latest ports: - 80:80 volumes: - ./nginx:/etc/nginx/conf.d - ./php:/var/www/html depends_on: - php mariadb: build: context: ./mariadb environment: - MYSQL_ROOT_PASSWORD=123456 - MYSQL_DATABASE=mydb volumes: - ./mariadb/data:/var/lib/mysql ports: - 3306:3306 php: build: context: ./php volumes: - ./php:/var/www/html
上記の構成では、Nginx、MariaDB、および PHP の 3 つのサービスを定義しました。 Nginx サービスは HTTP リクエストの処理と PHP コンテナ上のアプリケーションへのリクエストの転送を担当し、MariaDB サービスはデータベース サービスを提供し、PHP コンテナは PHP アプリケーションを実行します。
次に、HTTP リクエストを PHP コンテナ上のアプリケーションに転送するための Nginx 構成ファイル default.conf
を作成する必要があります。サンプル構成は次のとおりです。
server { listen 80; server_name localhost; root /var/www/html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { try_files $uri =404; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
上記の構成では、2 つのロケーション ブロックを定義しました。最初のロケーション ブロックは、画像、CSS、JavaScript ファイルなどの静的ファイル リクエストを処理するために使用され、2 番目のロケーション ブロックは、PHP スクリプト リクエストを PHP コンテナ上の FastCGI プロセスに転送するために使用されます。
次に、MariaDB コンテナーの Dockerfile と初期化スクリプト init.sql
を作成する必要があります。サンプル Dockerfile は次のとおりです。
FROM mariadb:latest COPY init.sql /docker-entrypoint-initdb.d
Sampleinit.sql
このスクリプトは、mydb
データベースと users
テーブルを作成するために使用されます。
CREATE DATABASE IF NOT EXISTS mydb; USE mydb; CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL );
最後に、PHP コンテナーの Dockerfile とサンプル PHP アプリケーション index.php
を作成する必要があります。サンプル Dockerfile は次のとおりです:
FROM php:7.4-fpm RUN apt-get update && apt-get install -y zlib1g-dev libzip-dev RUN docker-php-ext-install zip pdo_mysql COPY index.php /var/www/html
Sampleindex.php
このアプリケーションは、データのバックアップと復元のプロセスをデモンストレーションするために使用されます:
<?php $dbHost = 'mariadb'; $dbUser = 'root'; $dbPass = '123456'; $dbName = 'mydb'; try { $pdo = new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUser, $dbPass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]); // 插入数据 $pdo->exec("INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')"); // 查询数据 $stmt = $pdo->query("SELECT * FROM users"); $users = $stmt->fetchAll(); // 打印数据 foreach ($users as $user) { echo $user['name'] . ' (' . $user['email'] . ')' . PHP_EOL; } } catch (PDOException $e) { echo "Error: " . $e->getMessage(); }
これで、実行できます。 docker- compose up
コマンドを使用して、プロジェクト全体を開始します。ブラウザで http://localhost
にアクセスすると、挿入されたデータと印刷結果が表示されるはずです。
データのバックアップを実現するには、データベースのバックアップ操作を定期的に実行するシェル スクリプトを追加します。サンプル スクリプトは次のとおりです。
#!/bin/bash BACKUP_DIR="/path/to/backup" DATE=$(date +%Y%m%d%H%M%S) BACKUP_FILE="$BACKUP_DIR/mydb_$DATE.sql" docker exec -i CONTAINER_NAME mysqldump -uroot -p123456 mydb > $BACKUP_FILE if [ $? -eq 0 ]; then echo "Backup completed: $BACKUP_FILE" else echo "Backup failed" fi
上記のスクリプトでは、最初にバックアップ ディレクトリとバックアップ ファイル名を定義します。次に、docker exec
コマンドを使用して mysqldump
コマンドを実行し、データベースをエクスポートし、エクスポートされたデータをバックアップ ファイルに保存します。
データを復元するには、データベースの復元操作を実行するシェル スクリプトを作成します。サンプル スクリプトは次のとおりです。
#!/bin/bash BACKUP_FILE="/path/to/backup/mydb_20210101120000.sql" docker exec -i CONTAINER_NAME mysql -uroot -p123456 mydb < $BACKUP_FILE if [ $? -eq 0 ]; then echo "Restore completed" else echo "Restore failed" fi
上記のスクリプトは、docker exec
コマンドを使用して、バックアップ ファイル内のデータをデータベースにインポートします。
上記の手順により、Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションのデータ バックアップと復元を正常に実装できました。バックアップ スクリプトを定期的に実行することで、データベースのスナップショットを作成し、必要なときに復元できるようになります。これにより、アプリケーションの可用性と耐障害性が向上します。
以上がDocker Compose、Nginx、MariaDB を介した PHP アプリケーションのデータのバックアップと復元の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PHPは動的なWebサイトを構築するために使用され、そのコア関数には次のものが含まれます。1。データベースに接続することにより、動的コンテンツを生成し、リアルタイムでWebページを生成します。 2。ユーザーのインタラクションを処理し、提出をフォームし、入力を確認し、操作に応答します。 3.セッションとユーザー認証を管理して、パーソナライズされたエクスペリエンスを提供します。 4.パフォーマンスを最適化し、ベストプラクティスに従って、ウェブサイトの効率とセキュリティを改善します。

PHPはMySQLIおよびPDO拡張機能を使用して、データベース操作とサーバー側のロジック処理で対話し、セッション管理などの関数を介してサーバー側のロジックを処理します。 1)MySQLIまたはPDOを使用してデータベースに接続し、SQLクエリを実行します。 2)セッション管理およびその他の機能を通じて、HTTPリクエストとユーザーステータスを処理します。 3)トランザクションを使用して、データベース操作の原子性を確保します。 4)SQLインジェクションを防ぎ、例外処理とデバッグの閉鎖接続を使用します。 5)インデックスとキャッシュを通じてパフォーマンスを最適化し、読みやすいコードを書き、エラー処理を実行します。

PHPで前処理ステートメントとPDOを使用すると、SQL注入攻撃を効果的に防ぐことができます。 1)PDOを使用してデータベースに接続し、エラーモードを設定します。 2)準備方法を使用して前処理ステートメントを作成し、プレースホルダーを使用してデータを渡し、メソッドを実行します。 3)結果のクエリを処理し、コードのセキュリティとパフォーマンスを確保します。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ドリームウィーバー CS6
ビジュアル Web 開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
