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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

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

ホットトピック









PHP 分散システム アーキテクチャは、ネットワークに接続されたマシン全体にさまざまなコンポーネントを分散することで、スケーラビリティ、パフォーマンス、およびフォールト トレランスを実現します。このアーキテクチャには、アプリケーション サーバー、メッセージ キュー、データベース、キャッシュ、ロード バランサーが含まれます。 PHP アプリケーションを分散アーキテクチャに移行する手順は次のとおりです。 サービス境界の特定 メッセージ キュー システムの選択 マイクロサービス フレームワークの採用 コンテナ管理への展開 サービスの検出

回答: PHP マイクロサービスは、アジャイル開発のために HelmCharts でデプロイされ、分離とスケーラビリティのために DockerContainer でコンテナ化されます。詳細説明: HelmCharts を使用して PHP マイクロサービスを自動的にデプロイし、アジャイル開発を実現します。 Docker イメージを使用すると、マイクロサービスの迅速な反復とバージョン管理が可能になります。 DockerContainer 標準はマイクロサービスを分離し、Kubernetes がコンテナの可用性とスケーラビリティを管理します。 Prometheus と Grafana を使用して、マイクロサービスのパフォーマンスと健全性を監視し、アラームと自動修復メカニズムを作成します。

ピン張りのノードの詳細な説明とインストールガイドこの記事では、ピネットワークのエコシステムを詳細に紹介します - PIノードは、ピン系生態系における重要な役割であり、設置と構成の完全な手順を提供します。 Pinetworkブロックチェーンテストネットワークの発売後、PIノードは多くの先駆者の重要な部分になり、テストに積極的に参加し、今後のメインネットワークリリースの準備をしています。まだピン張りのものがわからない場合は、ピコインとは何かを参照してください。リストの価格はいくらですか? PIの使用、マイニング、セキュリティ分析。パインワークとは何ですか?ピン競技プロジェクトは2019年に開始され、独占的な暗号通貨PIコインを所有しています。このプロジェクトは、誰もが参加できるものを作成することを目指しています

DeepSeekをインストールするには、Dockerコンテナ(最も便利な場合は、互換性について心配する必要はありません)を使用して、事前コンパイルパッケージ(Windowsユーザー向け)を使用してソースからコンパイル(経験豊富な開発者向け)を含む多くの方法があります。公式文書は慎重に文書化され、不必要なトラブルを避けるために完全に準備します。

コンテナ化により、次の方法で Java 関数のパフォーマンスが向上します。 リソースの分離 - 分離されたコンピューティング環境を確保し、リソースの競合を回避します。軽量 - 消費するシステム リソースが少なくなり、実行時のパフォーマンスが向上します。高速起動 - 関数の実行遅延を軽減します。一貫性 - アプリケーションとインフラストラクチャを分離して、環境全体で一貫した動作を保証します。

回答: PHPCI/CD を使用して、CI/CD パイプラインの設定、自動化されたテストおよび展開プロセスなどの迅速な反復を実現します。 CI/CD パイプラインのセットアップ: CI/CD ツールを選択し、コード リポジトリを構成し、ビルド パイプラインを定義します。自動テスト: 単体テストと統合テストを作成し、テスト フレームワークを使用してテストを簡素化します。実際のケース: TravisCI の使用: TravisCI をインストールし、パイプラインを定義し、パイプラインを有効にして、結果を表示します。継続的デリバリーを実装します。展開ツールを選択し、展開パイプラインを定義し、展開を自動化します。利点: 開発効率が向上し、エラーが減少し、納期が短縮されます。

Docker コンテナを使用した Java EE アプリケーションのデプロイ: Dockerfile を作成してイメージを定義し、イメージを構築し、コンテナを実行してポートをマップし、ブラウザでアプリケーションにアクセスします。サンプル JavaEE アプリケーション: REST API はデータベースと対話し、Docker 経由でデプロイ後にローカルホストでアクセスできます。

1. まず、インターフェイスを開いた後、左側の拡張機能アイコン ボタンをクリックします。 2. 次に、開いた拡張機能ページで検索バーの場所を見つけます。 3. 次に、マウスで「Docker」という単語を入力して拡張機能プラグインを見つけます。 4最後に、対象のプラグインを選択して右をクリックし、下隅にあるインストールボタンをクリックします。
