通过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。Nginx服务负责处理HTTP请求,将请求转发到PHP容器上的应用程序;MariaDB服务提供数据库服务;PHP容器运行PHP应用程序。
接下来,我们需要创建一个Nginx配置文件default.conf
,用于将HTTP请求转发到PHP容器上的应用程序。示例配置如下:
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;
}
}
登录后复制
在上面的配置中,我们定义了两个location块。第一个location块用于处理静态文件请求,例如图片、CSS和JavaScript文件;第二个location块用于将PHP脚本请求转发到PHP容器上的FastCGI进程。
然后,我们需要创建一个MariaDB容器的Dockerfile和初始化脚本init.sql
。示例Dockerfile如下:
FROM mariadb:latest
COPY init.sql /docker-entrypoint-initdb.d
登录后复制
示例init.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
登录后复制
示例index.php
应用程序用于演示数据备份和还原的过程: