Copias de seguridad

Backup en contenedores Docker para WordPress: guía completa

¿qué ocurre si el contenedor de WordPress o la base de datos falla y no hay una copia fiable disponible? Muchas empresas subestiman la complejidad de respaldar WordPress cuando se ejecuta en contenedores Docker. Existen soluciones simples para desarrollos locales, pero en entornos productivos es imprescindible una estrategia coherente que cubra volúmenes, bases de datos, consistencia transaccional y restauración verificada. La solución inmediata es diseñar copias que incluyan: exportación consistente de la base de datos (hot backups para MySQL/MariaDB), copia de volúmenes persistentes (wp-content, uploads y plugins), automatización con contenedores de backup o jobs y almacenamiento cifrado en la nube con políticas de retención y verificación automatizada.

Índice

Anuncio

Puntos clave: pasos rápidos y decisiones críticas

Backup en contenedores Docker para WordPress: guía completa

Cómo hacer backup en contenedores Docker para WordPress

Hacer backup de WordPress en Docker requiere identificar los componentes críticos: volúmenes con archivos PHP y uploads, la base de datos, y la configuración de servicios (env, redes, compose). La técnica más segura en producción mezcla dos enfoques: snapshots de volúmenes o del host (si el proveedor lo soporta) y dumps consistentes de la base de datos. Para bases MySQL/MariaDB en contenedores, realizar dump con mysqldump --single-transaction --quick es suficiente para motores InnoDB en la mayoría de casos; para cargas muy altas o para motores con WAL (PostgreSQL), usar pg_dump/pg_basebackup o snapshots coordinados. En entornos con alta concurrencia, coordinar un breve bloqueo de escritura o usar réplicas para hacer backups sin impacto de I/O es la opción profesional.

Docker-compose reproducible (backup + restore)

A continuación, plantilla reducida pero funcional de docker-compose para WordPress y MariaDB que permite volúmenes externos. La plantilla incluye volúmenes nombrados, que son los objetos a respaldar.

version: '3.8'

services:

  db:

    image: mariadb:10.6

    environment:

      MYSQL_ROOT_PASSWORD: example

      MYSQL_DATABASE: wp

      MYSQL_USER: wp

      MYSQL_PASSWORD: wppass

    volumes:

      - db_data:/var/lib/mysql

    networks:

      - wpnet



  wordpress:

    image: wordpress:6.3

    environment:

      WORDPRESS_DB_HOST: db:3306

      WORDPRESS_DB_USER: wp

      WORDPRESS_DB_PASSWORD: wppass

      WORDPRESS_DB_NAME: wp

    volumes:

      - wp_data:/var/www/html

    networks:

      - wpnet



volumes:

  db_data:

  wp_data:



networks:

  wpnet:

Con esta estructura, los backups deben enfocarse sobre db_data y wp_data. Copias simples de volúmenes con docker run --rm -v db_data:/from -v /backup:/to alpine ash -c "cd /from && tar czf /to/db_data.tar.gz ." son útiles para desarrollo, pero no garantizan consistencia de la base de datos en producción.

Consistencia de base de datos: cómo evitar corrupción

Para MySQL/MariaDB (InnoDB): usar mysqldump con --single-transaction --quick o realizar snapshot del sistema de ficheros coordinado con FLUSH TABLES WITH READ LOCK si se usa archivo binlog y no hay réplica. Otra opción superior es realizar backups desde una réplica esclava para evitar impacto en la primaria. Para PostgreSQL, pg_basebackup o backups WAL gestionados son recomendables. Para sitios con alta escritura, incorporar replicación y backups desde réplicas garantiza mínima latencia.

Anuncio

Estrategias de copias: volúmenes, bases de datos y archivos

Existen tres enfoques principales: copia de volúmenes, exportar la base de datos, y crear imágenes del contenedor. Cada uno tiene ventajas y limitaciones. Los volúmenes contienen todo el filesystem de WordPress (plugins, themes, uploads) pero no la estructura interna de la base de datos. Exportar la base de datos asegura la capa de datos relacionales; combinar ambos garantiza restauraciones completas. Crear una imagen del contenedor (docker commit) no es una solución de backup fiable para datos persistentes porque los volúmenes no se incorporan en la imagen por defecto.

Tabla comparativa: volúmenes vs snapshots vs export (HTML)

Método Descripción Ventajas Limitaciones Coste típico
Copias de volúmenes (tar/rsync) Exportar archivos del volumen al host o almacenamiento Fácil, portable Riesgo de inconsistencia de DB; lento para grandes volúmenes Bajo
Snapshots a nivel de host/FS (LVM/ZFS/EBS) Instant snapshot del volumen en bloque Rápido, consistente si se coordina Requiere soporte del proveedor; puede necesitar freeze de DB Medio-Alto
Export DB (mysqldump/pg_dump) Dump lógico de la base de datos Consistente, portable, pequeño Tiempo de dump en bases grandes; restauración más lenta Bajo-Medio
Backups incrementales (restic/Borg) Deduplicación e incrementales sobre datos cambiantes Alta eficiencia de almacenamiento y cifrado Proceso más complejo y curva de aprendizaje Medio

Recomendación práctica

Para entornos empresariales, la estrategia líder combina: snapshots rápidos del volumen (si están disponibles), dumps lógicos o backups desde réplicas para la base de datos y backup incremental con deduplicación para archivos (restic/Borg). Mantener una política 3-2-1: tres copias, dos medios diferentes, una fuera de sitio.

Foto de backup contenedores docker

Automatizar backups con Docker Compose y cron jobs

Automatizar reduce errores humanos y asegura regularidad. Dos patrones comunes: a) contenedor de backup dedicado que ejecuta restic/borg/rclone según cron o systemd timer; b) tareas programadas en el host que ejecutan scripts docker exec/docker run para generar dumps y subirlos al almacenamiento remoto. El enfoque recomendado es encapsular la lógica en un contenedor no invasivo que tenga acceso a volúmenes y credenciales (mediante secretos) y que envíe logs a un sistema centralizado (SIEM o monitorización).

Contenedor de backup con restic en docker-compose

Es crucial que las credenciales AWS/S3 se gestionen como secretos (Docker Secrets o variables de entorno en un orquestador). Además, configurar alertas (email/Slack) para fallos y sumar verificaciones automáticas (restic check) al pipeline.

Backups incrementales y snapshots: ahorrar espacio y tiempo

Backups incrementales permiten almacenar solo los cambios desde la última copia, reduciendo coste de almacenamiento y tiempo de operación. Herramientas recomendadas: restic (2026: activo, soportado, cifrado y deduplicación), Borg (excepcional deduplicación local), y rclone para sincronización con múltiples backends. Para entornos con soporte de snapshots a nivel cloud (EBS, GCE PD), combinar snapshot + backup incremental de ficheros reduce las ventanas de backup.

Implementación técnica: restic + S3 (ejemplo resumido)

1) Inicializar repositorio cifrado: RESTIC_REPOSITORY=s3:s3.amazonaws.com/bucket/restic_repo RESTIC_PASSWORD=secret restic init
2) Backups diarios: restic backup /var/www/html --tag wordpress --exclude .cache
3) Política de retención: restic forget --prune --keep-daily 7 --keep-weekly 4 --keep-monthly 12

Restic permite comprobación de integridad con restic check y restauración selectiva por ruta o tag.

Anuncio

Almacenamiento en la nube: S3, Wasabi y compatibilidad

S3 es el estándar de facto: alta durabilidad, integración directa con herramientas, regionabilidad y lifecycle policies. Wasabi ofrece compatibilidad S3 con coste menor y sin cargos por egress en muchas ofertas; es una alternativa válida para backups que no requieran características avanzadas de AWS. Google Cloud Storage y Backblaze B2 también son opciones a considerar. Las prácticas recomendadas incluyen: cifrado en tránsito y reposo, versionado de objetos para evitar borrados accidentales, y uso de lifecycle para gestión de retención.

Costes y límites (indicative, actual at time of writing 2026)

Evaluar costes en función de volumen enlazado: un sitio WordPress con 20 GB de uploads y base de datos de 2 GB, con retención de 30 días y backups diarios incrementales, típicamente consumirá 25-40 GB de almacenamiento efectivo con deduplicación.

Pruebas de restauración y procedimientos ante incidentes

La prueba de restauración es obligación. Cada backup debe tener asociado un procedimiento documentado que incluya tiempo objetivo de recuperación (RTO) y punto objetivo de recuperación (RPO). Las pruebas deben realizarse en entornos aislados y registrarse. Un procedimiento típico: restaurar DB en réplica, montar volúmenes restaurados, verificar integridad de archivos y pruebas funcionales (login, carga de homepage, compra si hay eCommerce). Automatizar pruebas básicas (smoke tests) con scripts es recomendable.

Checklist de recuperación ante desastre

Flujo de backup para WordPress en Docker

Flujo de backup
Contenedor WordPress ➜ Volúmenes (wp_data) ➜ Dump DB (mysqldump o réplica) ➜ Contenedor backup (restic) ➜ Envío cifrado a S3/Wasabi ➜ Verificación
1
Preparar dump/snapshot
2
Enviar a repositorio cifrado
3
Verificar y retener
© Referencia: mantenwp.com

Anuncio

Análisis estratégico: elegir la estrategia según riesgo y presupuesto

Monitorización, alertas y verificación automática

Implementar notificaciones por fallo de backup (email/Slack), métricas de éxito/fracaso, retención y verificación automática (restic check). Registrar logs en central y rotarlos. Un backup sin alertas útiles es un riesgo oculto.

Enlaces útiles y referencias

Anuncio

Preguntas frecuentes (FAQ)

¿Es suficiente copiar el volumen con tar para producción?

No. Copiar volúmenes con tar puede dejar la base de datos en estado inconsistente durante operaciones activas; para bases de datos se recomienda mysqldump o snapshots coordinados.

¿Se puede usar docker commit como backup?

No se recomienda: docker commit no incluye volúmenes persistentes y no garantiza consistencia de la base de datos o del sistema de archivos de datos.

¿Qué herramienta ofrece mejor deduplicación: restic o Borg?

Borg suele tener deduplicación local muy eficiente; restic ofrece deduplicación, cifrado y backend S3 nativo con mayor simplicidad para almacenamiento remoto.

¿Con qué frecuencia probar las restauraciones?

Se recomienda probar al menos una restauración completa mensual y pruebas automáticas de integridad tras cada backup crítico.

¿Dónde guardar las credenciales de backup?

Usar secretos gestionados (Docker Secrets, gestores de secretos del proveedor cloud) y no variables de entorno sin cifrado.

Plan de acción (3 pasos rápidos <10min cada uno)

1) Auditar volúmenes y bases de datos

Listar volúmenes Docker relevantes (/var/lib/docker/volumes) y comprobar tamaño aproximado. Identificar si la base de datos admite snapshot o requiere dump.

2) Implementar backup básico automatizado

Configurar un job cron/contendor que ejecute mysqldump con --single-transaction y copie wp-content a S3/Wasabi usando rclone/restic; añadir notificaciones en caso de fallo.

3) Verificar restauración en entorno de staging

Restaurar el dump y los archivos en un entorno aislado y ejecutar pruebas funcionales. Documentar tiempos de RTO y RPO.

Contacto y recursos adicionales: soporte técnico y servicios profesionales disponibles en mantenwp.com o por correo a [email protected].

RESUMIR CON IA: Extrae lo importante

Comparte este artículo:

Josu Barrios

Josu Barrios

Somos especialistas en mantenimiento WordPress para empresas, profesionales y tiendas online. Contamos con experiencia en seguridad web, optimización de rendimiento, actualizaciones, copias de seguridad y resolución de incidencias técnicas, ayudando a que cada sitio funcione de forma rápida, estable y protegida. Nuestro enfoque combina soporte técnico profesional, buenas prácticas de seguridad y seguimiento continuo para ofrecer un servicio fiable, transparente y orientado a resultados reales.