wpbackup.ru wordpress WPBackup.ru

Автоматизация изоляции резервных копий WordPress с помощью Docker

При работе с WordPress важным аспектом является не только создание резервных копий, но и их изоляция в безопасной среде для предотвращения повреждений и конфликтов с основным сайтом. В этой статье рассмотрим, как можно автоматизировать процесс изоляции резервных копий WordPress с помощью контейнеризации на базе Docker. Такой подход позволит запускать отдельные копии сайта в изолированной среде, что удобно для тестирования, восстановления и разработки.

Почему стоит использовать Docker для изоляции резервных копий WordPress

Docker позволяет создавать лёгкие и изолированные контейнеры с нужной конфигурацией. В контексте резервных копий WordPress это даёт несколько преимуществ:

  • Изоляция среды: каждая резервная копия работает в отдельном контейнере с собственным веб-сервером и базой данных, что исключает конфликты;
  • Быстрый запуск и тестирование: можно быстро поднять копию с нужной версией WordPress для проверки или восстановления после ошибок;
  • Автоматизация: с помощью Docker Compose и скриптов можно автоматизировать процессы создания, запуска и удаления изолированных копий;
  • Удобство хранения: можно подключать тома для хранения резервных копий вне контейнеров, что упрощает управление данными.

Кроме того, такой подход отлично сочетается с существующими средствами резервного копирования, например, с плагинами, которые делают дампы базы и файлов, а Docker обеспечивает удобную среду для их восстановления.

Настройка Docker для изоляции резервных копий WordPress

Основная идея — создать Docker Compose файл, который будет запускать WordPress и базу данных MySQL в отдельных контейнерах, используя данные из резервной копии. Рассмотрим пример такого конфигурационного файла docker-compose.yml:

version: '3.8'
services:
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    volumes:
      - ./wp-backup:/var/www/html
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wpbackup_user
      WORDPRESS_DB_PASSWORD: wpbackup_pass
      WORDPRESS_DB_NAME: wpbackup_db
  db:
    image: mysql:5.7
    volumes:
      - db_data:/var/lib/mysql
      - ./db-backup.sql:/docker-entrypoint-initdb.d/db-backup.sql:ro
    environment:
      MYSQL_DATABASE: wpbackup_db
      MYSQL_USER: wpbackup_user
      MYSQL_PASSWORD: wpbackup_pass
      MYSQL_ROOT_PASSWORD: rootpass
volumes:
  db_data:

Здесь:

  • ./wp-backup — папка с файлами WordPress из резервной копии;
  • ./db-backup.sql — SQL дамп базы данных из резервной копии;
  • Контейнер wordpress поднимает сайт на порту 8080 для локального доступа;
  • Контейнер db создаёт базу и загружает данные из дампа.

Запуск контейнеров командой docker-compose up -d поднимет изолированную копию сайта, доступную по адресу http://localhost:8080. Это удобно для проверки резервной копии и тестирования.

Автоматизация процесса с помощью bash-скрипта

Для удобства можно написать скрипт, который будет принимать путь к резервной копии и автоматически разворачивать контейнеры. Пример простого скрипта wpbackup-docker-deploy.sh:

#!/bin/bash

# Путь к папке с файлами WordPress
FILES_PATH=$1
# Путь к SQL дампу
SQL_PATH=$2

if [ -z "$FILES_PATH" ] || [ -z "$SQL_PATH" ]; then
  echo "Использование: ./wpbackup-docker-deploy.sh /путь/к/файлам /путь/к/дампу.sql"
  exit 1
fi

# Копируем файлы и дамп в рабочую директорию
rm -rf ./wp-backup && mkdir -p ./wp-backup
cp -r "$FILES_PATH"/* ./wp-backup/
cp "$SQL_PATH" ./db-backup.sql

# Запускаем контейнеры
docker-compose up -d

echo "Контейнеры с WordPress запущены. Доступ по http://localhost:8080"

Данный скрипт удаляет старую копию, копирует новую и запускает контейнеры. Его можно доработать, добавив удаление старых контейнеров, логирование и другие функции.

Использование плагинов для создания резервных копий и интеграция с Docker

Для создания резервных копий рекомендуется использовать проверенные плагины, которые позволяют экспортировать файлы и базу данных отдельно. Ниже несколько популярных решений:

  • UpdraftPlus: позволяет создавать полные резервные копии и сохранять их на облаках (Google Drive, Яндекс.Диск и др.). Можно скачать архивы и использовать их для развёртывания в Docker.
  • BackWPup: удобен для создания бэкапов и запуска задач резервного копирования по расписанию.
  • WPvivid Backup Plugin: поддерживает миграцию и восстановление сайтов, интеграция с облачными хранилищами.

После получения файлов и дампов базы можно использовать описанный выше метод с Docker для изоляции и тестирования копий.

Пример кода для автоматического экспорта базы из WordPress с помощью PHP

Если необходимо программно получить дамп базы, можно использовать следующий PHP-скрипт, который можно запустить в корне сайта или как часть плагина:

<?php
function wpbackup_export_db() {
    global $wpdb;
    $tables = $wpdb->get_results('SHOW TABLES', ARRAY_N);
    $sql = "";
    foreach ($tables as $table) {
        $table_name = $table[0];
        $create_table = $wpdb->get_row("SHOW CREATE TABLE $table_name", ARRAY_N);
        $sql .= $create_table[1] . ";\n\n";
        $rows = $wpdb->get_results("SELECT * FROM $table_name", ARRAY_A);
        foreach ($rows as $row) {
            $values = array_map('esc_sql', array_values($row));
            $sql .= "INSERT INTO $table_name VALUES ('" . implode("','", $values) . "');\n";
        }
        $sql .= "\n";
    }
    file_put_contents('wpbackup-db-export.sql', $sql);
}
wpbackup_export_db();
?>

Этот скрипт создаст файл wpbackup-db-export.sql с дампом базы в текущей директории, который затем можно использовать в Docker.

Рекомендации по безопасности и хранению резервных копий

При организации изолированных копий с помощью Docker важно не забывать о безопасности и правильном хранении данных:

  • Не храните резервные копии с конфиденциальной информацией в общедоступных местах.
  • Используйте защищённые тома Docker или шифрование для хранения бэкапов.
  • Регулярно тестируйте восстановление из резервных копий в изолированной среде.
  • Следите за обновлениями образов Docker для обеспечения безопасности контейнеров.

Использование Docker для изоляции резервных копий — это современный и удобный способ управления копиями WordPress, который подходит как разработчикам, так и администраторам.

Для удобства работы с WordPress и автоматизации процессов резервного копирования также рекомендуем обратить внимание на плагин WPBackup от WPShop, который отлично интегрируется с различными способами хранения и позволяет гибко настраивать резервное копирование.

×
Оптимизируй свой сайт!

Скидка -15% на премиум плагин Clearfy Pro

Купить плагин сейчас ⋙