Maison  >  Article  >  développement back-end  >  Migration de données pour les applications PHP utilisant Docker Compose, Nginx et MariaDB

Migration de données pour les applications PHP utilisant Docker Compose, Nginx et MariaDB

王林
王林original
2023-10-12 10:33:57736parcourir

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

Utilisez Docker Compose, Nginx et MariaDB pour mettre en œuvre la migration des données des applications PHP

Dans le processus de développement et de déploiement d'applications PHP, nous rencontrons souvent des situations de migration de données, c'est-à-dire la migration de données existantes d'un environnement vers un autre environnement. Pour simplifier ce processus, nous pouvons utiliser Docker Compose, Nginx et MariaDB pour mettre en œuvre la migration des données. Cet article vous donnera une introduction détaillée sur la façon d'utiliser ces outils et fournira des exemples de code spécifiques.

Docker Compose est un outil permettant de définir et d'exécuter des applications Docker multi-conteneurs. Il utilise des fichiers YAML pour configurer les services, réseaux, volumes, etc. de l'application. Nginx est un serveur Web et un serveur proxy inverse populaire qui peut être utilisé pour transférer les requêtes HTTP vers le conteneur PHP approprié. MariaDB est un système de gestion de base de données relationnelle open source qui peut être utilisé pour stocker et gérer les données d'application.

Tout d’abord, nous devons créer un fichier Docker Compose pour définir les services de notre application. Dans cet exemple, nous allons créer deux services : l'un est le serveur Nginx et l'autre est la base de données MariaDB. Voici un exemple de fichier Docker Compose de base :

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

Dans l'exemple ci-dessus, nous avons défini deux services : nginx et mariadb. Le service nginx utilise l'image officielle Nginx et mappe le port 80 du conteneur au port 80 de l'hôte. Nous montons également un fichier de configuration nginx.conf personnalisé sur le chemin /etc/nginx/conf.d/default.conf du conteneur. Le service mariadb utilise l'image officielle de MariaDB et définit une variable d'environnement pour définir le mot de passe de l'utilisateur root. Nous avons également monté un répertoire pour stocker les données de la base de données. /etc/nginx/conf.d/default.conf路径。mariadb服务使用MariaDB的官方镜像,并设置了一个环境变量来设置root用户的密码。我们还挂载了一个目录用于存储数据库的数据。

接下来,我们需要创建一个nginx.conf配置文件来定义Nginx服务器的虚拟主机。在这个例子中,我们将配置Nginx将所有的HTTP请求转发到一个名为php-app的PHP容器。以下是一个简单的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容器中。

如果你希望定期进行数据备份,可以通过一个简单的shell脚本来实现。以下是一个示例的备份脚本:

#!/bin/bash

docker exec <mariadb_container_name> mysqldump -uroot -p<password> <database_name> > backup.sql

在上述示例中,fb86933f67ce8306e5f20be52aba8df4是MariaDB容器的名称,cb1ebc435675187bdcfb539b370c2e37是root用户的密码,6b7267f525327f2a23dcb01791a146aa是你要备份的数据库名称。该脚本将创建一个名为backup.sql

Ensuite, nous devons créer un fichier de configuration nginx.conf pour définir l'hôte virtuel du serveur Nginx. Dans cet exemple, nous allons configurer Nginx pour transmettre toutes les requêtes HTTP vers un conteneur PHP nommé php-app. Voici un exemple simple de fichier de configuration nginx.conf :

rrreee

Dans l'exemple ci-dessus, nous avons défini un serveur proxy nommé php-app et lui avons transmis toutes les requêtes HTTP. Nous utilisons également la directive proxy_set_header pour transmettre l'en-tête Host de la requête au serveur proxy.

Maintenant, nous pouvons démarrer notre application en utilisant la commande suivante :
    rrreee
  1. Cela créera et démarrera le conteneur contenant les services Nginx et MariaDB. Nous pouvons vérifier si Nginx fonctionne correctement en visitant http://localhost. Si tout va bien, vous devriez pouvoir voir la page d’accueil de votre application PHP.
  2. Ensuite, nous présenterons comment mettre en œuvre la migration des données. Disons que nous disposons déjà d'un fichier d'exportation de base de données MySQL backup.sql que nous souhaitons importer dans notre conteneur MariaDB. Voici un exemple de commande simple :
  3. rrreee
  4. Dans la commande ci-dessus, fb86933f67ce8306e5f20be52aba8df4 est le nom de votre conteneur MariaDB et cb1ebc435675187bdcfb539b370c2e37 est ce que vous avez défini. Le mot de passe de l'utilisateur root, backup.sql est le fichier d'exportation de la base de données. Cette commande importera la base de données dans le conteneur MariaDB.
Si vous souhaitez effectuer une sauvegarde régulière des données, vous pouvez le faire via un simple script shell. Voici un exemple de script de sauvegarde : 🎜rrreee🎜Dans l'exemple ci-dessus, fb86933f67ce8306e5f20be52aba8df4 est le nom du conteneur MariaDB, cb1ebc435675187bdcfb539b370c2e37 est le mot de passe de l'utilisateur root, 6b7267f525327f2a23dcb01791a146aa est le nom de la base de données que vous souhaitez sauvegarder. Ce script créera un fichier de sauvegarde de base de données nommé backup.sql. 🎜🎜Pour résumer, la migration des données des applications PHP peut être facilement réalisée à l'aide de Docker Compose, Nginx et MariaDB. En conteneurisant les applications et les bases de données, nous pouvons facilement déployer et migrer nos applications et transmettre les requêtes via Nginx. J'espère que cet article pourra vous aider dans la migration des données lors du développement et du déploiement d'applications PHP. 🎜🎜Matériaux de référence : 🎜🎜🎜Docker Compose documentation officielle : https://docs.docker.com/compose/🎜🎜Documentation officielle Nginx : https://nginx.org/en/docs/🎜🎜Documentation officielle MariaDB : https ://mariadb.com/kb/en/documentation/🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn