Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penghijrahan data untuk aplikasi PHP menggunakan Docker Compose, Nginx dan MariaDB

Penghijrahan data untuk aplikasi PHP menggunakan Docker Compose, Nginx dan MariaDB

王林
王林asal
2023-10-12 10:33:57713semak imbas

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

Gunakan Docker Compose, Nginx dan MariaDB untuk melaksanakan pemindahan data aplikasi PHP

Dalam proses membangunkan dan menggunakan aplikasi PHP, kami sering menghadapi situasi pemindahan data, iaitu, memindahkan data sedia ada dari satu persekitaran ke persekitaran yang Lain. Untuk memudahkan proses ini, kami boleh menggunakan Docker Compose, Nginx dan MariaDB untuk melaksanakan migrasi data. Artikel ini akan memberi anda pengenalan terperinci tentang cara menggunakan alatan ini dan memberikan contoh kod khusus.

Docker Compose ialah alat untuk mentakrif dan menjalankan aplikasi Docker berbilang bekas. Ia menggunakan fail YAML untuk mengkonfigurasi perkhidmatan aplikasi, rangkaian, volum, dsb. Nginx ialah pelayan web popular dan pelayan proksi terbalik yang boleh digunakan untuk memajukan permintaan HTTP ke bekas PHP yang betul. MariaDB ialah sistem pengurusan pangkalan data hubungan sumber terbuka yang boleh digunakan untuk menyimpan dan mengurus data aplikasi.

Pertama, kita perlu mencipta fail Karang Docker untuk menentukan perkhidmatan aplikasi kita. Dalam contoh ini, kami akan mencipta dua perkhidmatan: satu ialah pelayan Nginx dan satu lagi ialah pangkalan data MariaDB. Berikut ialah contoh fail Karang Docker asas:

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

Dalam contoh di atas, kami telah menentukan dua perkhidmatan: nginx dan mariadb. Perkhidmatan nginx menggunakan imej Nginx rasmi dan memetakan port kontena 80 ke port 80 hos. Kami juga melekapkan fail konfigurasi nginx.conf tersuai ke laluan /etc/nginx/conf.d/default.conf bekas. Perkhidmatan mariadb menggunakan imej rasmi MariaDB dan menetapkan pembolehubah persekitaran untuk menetapkan kata laluan pengguna root. Kami juga memasang direktori untuk menyimpan data pangkalan data. /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

Seterusnya, kita perlu mencipta fail konfigurasi nginx.conf untuk menentukan hos maya pelayan Nginx. Dalam contoh ini, kami akan mengkonfigurasi Nginx untuk memajukan semua permintaan HTTP ke bekas PHP bernama php-app. Berikut ialah contoh fail konfigurasi nginx.conf yang mudah:

rrreee

Dalam contoh di atas, kami menentukan pelayan proksi bernama php-app dan memajukan semua permintaan HTTP ke pelayannya. Kami juga menggunakan arahan proxy_set_header untuk menghantar pengepala Hos permintaan kepada pelayan proksi.

Kini kita boleh memulakan aplikasi menggunakan arahan berikut:
    rrreee
  1. Ini akan mencipta dan memulakan bekas yang mengandungi perkhidmatan Nginx dan MariaDB. Kami boleh mengesahkan sama ada Nginx berfungsi dengan betul dengan melawati http://localhost. Jika semuanya baik-baik saja, anda sepatutnya dapat melihat halaman utama aplikasi PHP anda.
  2. Seterusnya, kami akan memperkenalkan cara melaksanakan migrasi data. Katakan kami sudah mempunyai fail eksport pangkalan data MySQL backup.sql yang ingin kami import ke dalam bekas MariaDB kami. Berikut ialah contoh arahan mudah:
  3. rrreee
  4. Dalam arahan di atas, fb86933f67ce8306e5f20be52aba8df4 ialah nama bekas MariaDB anda dan 5594e1c8b6d9525f9f329ee89f90fa86 ialah apa yang anda tetapkan Kata laluan pengguna root, backup.sql ialah fail eksport pangkalan data. Perintah ini akan mengimport pangkalan data ke dalam bekas MariaDB.
Jika anda ingin melakukan sandaran data biasa, anda boleh melakukannya melalui skrip shell mudah. Berikut ialah contoh skrip sandaran: 🎜rrreee🎜Dalam contoh di atas, fb86933f67ce8306e5f20be52aba8df4 ialah nama bekas MariaDB, 5594e1c8b6d9525f9f329ee89f90fa86 ialah kata laluan bagi pengguna akar, 6b7267f525327f2a23dcb01791a146aa ialah nama pangkalan data yang ingin anda sandarkan. Skrip ini akan mencipta fail sandaran pangkalan data bernama backup.sql. 🎜🎜Ringkasnya, pemindahan data aplikasi PHP boleh dicapai dengan mudah menggunakan Docker Compose, Nginx dan MariaDB. Dengan mengosongkan aplikasi dan pangkalan data, kami boleh menggunakan dan memindahkan aplikasi kami dengan mudah dan memajukan permintaan melalui Nginx. Saya harap artikel ini dapat membantu anda dengan pemindahan data semasa membangunkan dan menggunakan aplikasi PHP. 🎜🎜Bahan rujukan: 🎜🎜🎜Docker Karang dokumentasi rasmi: https://docs.docker.com/compose/🎜🎜Dokumentasi rasmi Nginx: https://nginx.org/en/docs/🎜🎜Dokumentasi rasmi MariaDB: https ://mariadb.com/kb/en/documentation/🎜🎜

Atas ialah kandungan terperinci Penghijrahan data untuk aplikasi PHP menggunakan Docker Compose, Nginx dan MariaDB. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn