Cómo instalar WordPress en Ubuntu usando Docker

Cómo instalar WordPress en Ubuntu usando Docker

Instalar WordPress en un servidor virtual privado (VPS) con Ubuntu suele requerir LAMP (Linux, Apache, MySQL, PHP). Sin embargo, también puedes configurar la plataforma utilizando Docker, una herramienta de contenerización que empaqueta aplicaciones y sus dependencias juntas.

Al utilizar Docker, la instalación de WordPress se simplifica, ya que se ejecuta a partir de imágenes preconstruidas que contienen todos los componentes necesarios. Este enfoque ofrece varias ventajas: es modular, fácil de actualizar y escalar, y rápido de redistribuir si necesitas crear una nueva instancia.

En este artículo, te explicaremos cómo instalar WordPress en Ubuntu con Docker. Aprenderás cada paso, desde la preparación de los requisitos previos hasta la gestión de WordPress como sistema de gestión de contenidos (CMS) en contenedores.

Requisitos previos para instalar WordPress con Docker

Antes de instalar WordPress en Docker, asegúrate de que tienes un VPS con una versión reciente de Ubuntu, como 22.04 o posterior, para evitar problemas de compatibilidad.

Tu servidor también debe permitir el acceso root completo para evitar errores de permisos al modificar archivos del sistema. Además, apunta un nombre de dominio a tu VPS para que tu sitio web de WordPress sea accesible al público.

Si no tienes un VPS, te recomendamos que contrates un plan VPS Docker de Hostinger. Como Docker y WordPress son relativamente ligeros, nuestro plan KVM 1 con una CPU de un solo núcleo, 4 GB de RAM y 50 GB de almacenamiento debería ser suficiente. Puedes pasar a un plan de nivel superior si necesitas más recursos a medida que crece tu sitio.

Con Hostinger, puedes conectarte a tu VPS como root directamente desde tu navegador web, haciendo que el proceso de instalación sea más eficiente.

Si encuentras dificultades durante la configuración, nuestro asistente con IA Kodee está disponible para guiarte en la gestión de tu instancia de WordPress. Simplemente escribe tus preguntas o describe tus necesidades y Kodee escribirá una guía paso a paso para ti.

Cómo instalar WordPress con Docker Compose

Sigue estos pasos para instalar WordPress utilizando Docker. Antes de proceder, accede a la interfaz de línea de comandos (CLI) de tu VPS utilizando el cliente SSH PuTTY o el terminal. Alternativamente, utiliza el terminal de navegador de Hostinger si necesitas una solución más sencilla.

1. Instala Docker y Docker Compose

Los usuarios de Hostinger pueden instalar Docker y Docker Compose en unos pocos clics, sin necesidad de comandos, utilizando la plantilla VPS preconfigurada. Este método es más sencillo y adecuado para principiantes.

¡Atención! La instalación de una nueva plantilla VPS borrará tus datos. Haz una copia de seguridad de los archivos importantes antes de proceder.

Para ello, solo tienes que abrir la página de gestión de tu VPS en hPanel y navegar hasta Sistema operativo y panel Sistema operativo. Selecciona Docker y haz clic en Cambiar SO.

Cambiar sistema operativo en hPanel

Si quieres más flexibilidad a la hora de configurar la herramienta, instala Docker y Docker Compose mediante comandos.

Ahora, comprueba si Docker y Docker Compose están configurados correctamente utilizando los siguientes comandos:

docker --version
docker-compose --version

Si estas herramientas funcionan correctamente, tu CLI mostrará su número de versión:

Ejemplo de CLI mostrando número de versión de Docker

2. Configura el directorio de tu proyecto

Crea un nuevo directorio de proyecto para alojar todos tus archivos de Docker y WordPress utilizando este comando:

mkdir wordpress

Por defecto, el comando creará la carpeta wordpress en el directorio personal de tu usuario actual. Puedes crearla en otra ubicación o utilizar un nombre diferente.

A continuación, abre la carpeta utilizando el comando que aparece a continuación:

cd wordpress

Una vez dentro, puedes empezar a configurar Docker y WordPress.

3. Crea un archivo Docker Compose

El archivo Docker Compose proporciona información sobre los componentes de software que debes instalar en tu contenedor. En este caso, especifica la configuración para WordPress y la aplicación de base de datos.

Para crear un archivo Docker Compose, ejecuta el siguiente comando:

sudo nano docker-compose.yml

Pega la siguiente configuración. Sustituye el nombre de usuario, contraseña y nombre de la base de datos por el valor que desees.

version: "3" 
services:
  db:
    image: mysql:latest
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: MySQLRootPassword
      MYSQL_DATABASE: MySQLDatabaseName
      MYSQL_USER: MySQLUsername
      MYSQL_PASSWORD: MySQLUserPassword

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    restart: always
    ports:
      - "80:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: MySQLUsername
      WORDPRESS_DB_PASSWORD: MySQLUserPassword
      WORDPRESS_DB_NAME: MySQLDatabaseName
    volumes:
      - "./:/var/www/html"

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - "8080:80"
    environment:
      PMA_HOST: db
      PMA_USER: MySQLUsername
      PMA_PASSWORD: MySQLUserPassword

volumes:
  mysql: {}

Guarda los cambios y vuelve a la pantalla principal pulsando Ctrl + X Y Intro.

4. Inicia el contenedor Docker

Ejecuta Docker Compose utilizando este comando para instalar y lanzar WordPress en un contenedor. Recuerda que sólo funciona cuando estás dentro del directorio del proyecto:

docker-compose up -d

Docker Compose extraerá imágenes de Docker Hub según lo especificado en tu archivo YAML, configurará el contenedor y establecerá la conexión de red. Dependiendo de tu velocidad de Internet, este proceso de configuración puede tardar unos minutos.

Estado Listo en la CLI

Una vez terminado, deberías ver el estado Done y volver a la pantalla principal.

5. Accede a la instalación de WordPress

Con tu contenedor Docker en funcionamiento, ya puedes acceder a la nueva instalación de WordPress a través de tu navegador web. Como tu nombre de dominio ya está apuntado al VPS, simplemente introdúcelo en la barra de direcciones del navegador.

Esto te llevará al asistente de configuración de WordPress. Elige el idioma que prefieras y haz clic en Continuar.

A continuación, rellena la información necesaria sobre tu sitio, incluyendo el título del sitio, nombre de usuario, contraseña y dirección de correo electrónico. Una vez completado, pulsa Instalar WordPress.

Página de ajustes iniciales de WordPress

Después, haz clic en Iniciar sesión para entrar en el panel de control de WordPress. Utiliza las credenciales que acabas de crear para acceder a tu panel de administración.

Panel de control de WordPress

6. Personaliza tu configuración Docker

Para entornos de producción, necesitarás configuraciones adicionales para que tu página web de WordPress sea segura y su rendimiento esté optimizado. A continuación se indican las personalizaciones clave para desplegar WordPress utilizando Docker:

Utilizar archivos de entorno

Para proteger los datos confidenciales, evita codificar credenciales como nombres de usuario y contraseñas de bases de datos en tu archivo Docker Compose. En su lugar, almacena estos valores en un archivo de entorno (.env).

En tu directorio de wordpress, crea un archivo .env:

nano .env

Define las credenciales de tu base de datos de WordPress en el archivo .env, sustituyendo los marcadores de posición por tus propios valores:

MYSQL_ROOT_PASSWORD=MySQLRootPassword
MYSQL_DATABASE=MySQLDatabaseName
MYSQL_USER=MySQLUsername
MYSQL_PASSWORD=MySQLUserPassword

Guarda el archivo y, a continuación, actualiza el archivo docker-compose.yml para utilizar estas variables de entorno:

db:
  image: mysql:latest
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
    MYSQL_DATABASE: ${MYSQL_DATABASE}
    MYSQL_USER: ${MYSQL_USER}
    MYSQL_PASSWORD: ${MYSQL_PASSWORD}

Guarda los cambios y reinicia Docker Compose para aplicar las nuevas configuraciones:

docker-compose up -d

Obtener certificados SSL

Un certificado SSL es importante para proteger los datos de los usuarios y mejorar el posicionamiento en los motores de búsqueda. Para activar los certificados SSL automáticos, añade un proxy NGINX con Let’s Encrypt en tu archivo docker-compose.yml:

services:
  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

  letsencrypt-nginx-proxy-companion:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: letsencrypt
    environment:
      NGINX_PROXY_CONTAINER: nginx-proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /etc/nginx/certs
      - /etc/nginx/vhost.d
      - /usr/share/nginx/html

A continuación, configura el servicio wordpress para que incluya etiquetas SSL. Sustituye tu_email y tu_dominio.com por tus credenciales reales.

wordpress:
  image: wordpress:latest
  labels:
    - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
    - "VIRTUAL_HOST=tu_dominio.com"
    - "LETSENCRYPT_HOST=tu_dominio.com"
    - "LETSENCRYPT_EMAIL=tu_email@tu_dominio.com"

Este es el contenido final de docker-compose.yml después de utilizar variables de entorno y añadir soporte SSL con NGINX:

version: "3"
services:
  db:
    image: mysql:latest
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    restart: always
    ports:
      - "80:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: ${MYSQL_USER}
      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
      WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
    volumes:
      - "./:/var/www/html"
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
      - "VIRTUAL_HOST=your_domain.com"
      - "LETSENCRYPT_HOST=your_domain.com"
      - "LETSENCRYPT_EMAIL=your_email@example.com"

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    ports:
      - "8080:80"
    environment:
      PMA_HOST: db
      PMA_USER: ${MYSQL_USER}
      PMA_PASSWORD: ${MYSQL_PASSWORD}

  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

  letsencrypt-nginx-proxy-companion:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: letsencrypt
    environment:
      NGINX_PROXY_CONTAINER: nginx-proxy
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /etc/nginx/certs
      - /etc/nginx/vhost.d
      - /usr/share/nginx/html

volumes:
  mysql: {}

No olvides guardar estos cambios y reiniciar Docker Compose después:

docker-compose up -d

7. Gestiona y escala WordPress con Docker

Después de ejecutar WordPress en Docker durante un tiempo, escala tu configuración para optimizar su rendimiento y haz copias de seguridad periódicas de tus archivos para mantener la integridad de los datos. A continuación cómo hacerlo:

Escalar contenedores de WordPress

A medida que crezca el tráfico de tu sitio, considera la posibilidad de escalar tu servicio WordPress para ejecutar varios contenedores. Esto te permite distribuir uniformemente las peticiones de los usuarios entre los distintos contenedores para obtener un rendimiento y un tiempo de actividad óptimos.

En tu archivo Docker Compose, especifica el número deseado de réplicas, por ejemplo 3, para añadir más instancias de tu contenedor WordPress:

 wordpress:
    depends_on:
      - db
    image: wordpress:latest
    restart: always
    ports:
      - "80:80"
  environment:
    WORDPRESS_DB_HOST: db:3306
    WORDPRESS_DB_USER: ${MYSQL_USER}
    WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}
    WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
  volumes:
    - "./:/var/www/html"
  deploy:
    replicas: 3

Aplica tus cambios ejecutando:

docker-compose up -d --scale wordpress=3

Docker iniciará ahora contenedores adicionales de WordPress y distribuirá el tráfico uniformemente entre ellos.

Copia de seguridad de los archivos de WordPress

Para proteger tu sitio de WordPress contra la pérdida o corrupción de datos, debes hacer copias de seguridad tanto de los archivos de WordPress como de la base de datos.

Dado que Docker monta el directorio de WordPress como un volumen, puedes hacer una copia de seguridad de este directorio utilizando un simple comando como éste:

cp -r /path/to/wordpress /path/to/backup/location

Para hacer una copia de seguridad de tu base de datos MySQL, ejecuta el siguiente comando. Sustituye [db_container_name], [MYSQL_USER], [MYSQL_PASSWORD] y [MYSQL_DATABASE] por el nombre y las credenciales reales de tu contenedor de base de datos:

docker exec [db_container_name] /usr/bin/mysqldump -u [MYSQL_USER] -p[MYSQL_PASSWORD] [MYSQL_DATABASE] > backup.sql

Este comando crea un volcado de la base de datos, que puedes restaurar más tarde si es necesario.

Alternativamente, los clientes de VPS de Hostinger pueden utilizar nuestras herramientas de copia de seguridad integradas para hacer copias de seguridad y restaurar datos fácilmente. 

Para acceder a estas funciones, ve a Respaldos y monitoreo → Snapshots y copias de seguridad en la barra lateral izquierda del panel de control de tu VPS.

A continuación, elige entre crear una instantánea para capturar tu configuración actual o restaurar los datos anteriores a partir de una copia de seguridad semanal automatizada.

Sección de Respaldos y monitoreo en hPanel

Conclusión

En este artículo, has aprendido a instalar y configurar WordPress utilizando Docker en un VPS Ubuntu. 

Desde la configuración de Docker Compose hasta la personalización para entornos de producción, ahora tienes una configuración de WordPress totalmente funcional en un entorno en contenedores.

Después de ejecutar WordPress utilizando Docker, considera la posibilidad de optimizar aún más tu sitio, por ejemplo utilizando una red de distribución de contenidos (CDN). También puedes configurar distintos contenedores Docker si decides alojar otras aplicaciones en el mismo VPS.

Si tienes alguna pregunta o quieres compartir tu experiencia desarrollando sitios web de WordPress con Docker, no dudes en dejar un comentario a continuación. ¡Buena suerte!

WordPress en Docker – Preguntas frecuentes

Esta sección cubre algunas de las preguntas más comunes sobre cómo instalar WordPress en Docker. 

¿Cuáles son las ventajas de utilizar Docker para WordPress?

Con Docker, puedes desplegar y escalar tu entorno WordPress según tus necesidades. Docker aísla las dependencias, facilitando la actualización, copia de seguridad y migración de tu sitio WordPress de forma eficiente.

¿Puedo ejecutar varios sitios de WordPress en un único servidor con Docker?

Sí, Docker te permite ejecutar varios sitios web de WordPress en un único servidor utilizando contenedores independientes para cada sitio. 

Configura cada contenedor con puertos, volúmenes y conexiones a bases de datos únicos para aislarlos.

¿Cómo configuro un contenedor Docker de WordPress?

Para configurar un contenedor Docker de WordPress, utiliza un archivo Docker Compose para definir servicios, puertos y variables de entorno. 

Para los datos sensibles, como las credenciales de la base de datos, sugerimos almacenarlos en un archivo .env vinculado al archivo Compose.

Author
El autor

Diego Vargas

Diego es comunicador social, especialista en publicidad digital que trabaja constantemente en mejorar sus conocimientos de marketing digital, enfocándose en contenido y SEO. Idiomas, series, libros y cursos en internet son sus hobbies principales, además de los deportes. Este es su perfil de LinkedIn.