通过Docker Compose、Nginx和MariaDB实现PHP应用程序的数据备份与还原

2023年 10月 12日 82.2k 0

通过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。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应用程序用于演示数据备份和还原的过程:

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论