当前位置:

首页 > 编程开发 > 通过Docker Compose、Nginx和MariaDB实现PHP应用程序的数据备份与还原

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

Docker Desktop macOS版
Docker Desktop macOS版

Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

立即下载
Mac 2026-10-13
数据库 编程开发 Desktop 开发工具 服务器管理

通过DockerCompose、Nginx和MariaDB实现PHP应用程序的数据备份与还原随着云计算和容器化技术的快速发展,越来越多的应用程序选择使用Docker来部署和运行。在Docker生态系统中,DockerCompose是一个非常受欢迎的工具,它可以通过一个单一的配置文件来定义和管理多个容器。本文将介绍如何使用DockerCompose、Ng

本文目录

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

     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,应该能够看到插入的数据和打印的结果。

    为了实现数据备份,我们可以添加一个Shell脚本来定期执行数据库备份操作。示例脚本如下:

    #!/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命令来导出数据库,并将导出的数据保存到备份文件中。

    为了实现数据还原,我们可以创建一个Shell脚本来执行数据库还原操作。示例脚本如下:

    #!/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应用程序的数据备份与还原。通过定期执行备份脚本,我们可以创建数据库的快照,以便在需要时进行还原。这为我们的应用程序提供了更高的可用性和容错性。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Docker 数据备份
    相关文章 更多
    iOS 27关闭降级通道后还能怎么选?版本限制与数据保护
    iOS 27关闭降级通道后还能怎么选?版本限制与数据保护

    针对iOS 27关闭降级通道的情况,解释版本签名状态对恢复流程的决定性影响,指导用户正确核对固件可用性,并在操作前做好数据保护,避免盲目刷机导致的风险。

    电脑开机不了怎么回事?常见原因和处理方法
    电脑开机不了怎么回事?常见原因和处理方法

    电脑按下电源键没反应或进不去桌面怎么办?本文详解 Windows 电脑的开机故障排查步骤,包括检查电源连接、解决黑屏问题以及使用自动修复功能,帮助你快速恢复电脑正常使用。

    Win10 U盘重装系统详细步骤:从BIOS设置到安装完成
    Win10 U盘重装系统详细步骤:从BIOS设置到安装完成

    掌握Win10 U盘重装系统的完整步骤,从制作官方安装介质、调整BIOS启动顺序,到安全分区与驱动恢复。本教程帮助新手避开数据丢失陷阱,实现干净、稳定的系统重装。

    docker创建容器后无法启动的排查与解决方法
    docker创建容器后无法启动的排查与解决方法

    Docker容器创建后无法启动或立即退出?本文详解如何通过docker logs查看报错、检查端口占用及修正配置文件,助你快速解决容器启动难题。

    灵活计算器安装失败怎么办?常见提示和处理方法
    灵活计算器安装失败怎么办?常见提示和处理方法

    遇到灵活计算器无法安装或闪退?本文详解如何区分网络下载、系统兼容、存储空间及账户同步四类问题,提供针对iPhone、iPad、Mac及Android设备的官方排查步骤,避免误删数据。

    Win10重装系统前怎么备份重要数据与驱动
    Win10重装系统前怎么备份重要数据与驱动

    防止Win10重装导致数据丢失,本文提供从文件分类备份、账号密钥整理到网卡驱动离线保存的完整流程,强调独立验证与恢复顺序,确保重装后快速恢复工作状态。

    XMind安装后的初始设置优化:语言、保存路径与文件关联
    XMind安装后的初始设置优化:语言、保存路径与文件关联

    刚安装好XMind不知道如何配置?本教程详解如何设置界面语言、规划文件保存路径以及修复.xmind文件关联,通过简单的测试步骤确保软件环境稳定,提升日常绘图效率。

    docker容器自动重启怎么解决 排查原因与修复方法
    docker容器自动重启怎么解决 排查原因与修复方法

    遇到Docker容器频繁自动重启?本文提供从查看容器日志、解读退出代码到配置Restart Policy的完整排查与修复方案,确保服务稳定性。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

    即将离开本站
    您即将前往第三方网站,请确认是否继续?