Descubre cómo realizar una instalación de WordPress en contenedores Docker, tanto de forma manual como con Docker Compose. Para desarrolladores de WordPress, esta opción es especialmente útil. Docker te permite probar múltiples configuraciones de WordPress y poner en marcha una nueva instalación con solo unos pocos comandos.

Hosting WordPress
WordPress más potente y rápido gracias a la IA
  • Creación y personalización de tu página asistida por la IA
  • 3 veces más rápido: SSD, caché y más
  • Análisis diarios, protección DDoS y disponibilidad del 99,98 %

Requisitos

Para que WordPress funcione correctamente en contenedores Docker, necesitas una distribución Linux actualizada y con soporte. Versiones anteriores como CentOS 7 o Ubuntu 14.04 están obsoletas y deberían reemplazarse por alternativas modernas. Se recomiendan:

  • Ubuntu 22.04 LTS o una nueva versión
  • Debian 12 o una versión más reciente
  • Una versión actual de Red Hat Enterprise Linux (RHEL) o AlmaLinux

Además, debe estar instalado Docker y listo para su uso. La versión mínima recomendada es Docker 20.10 o superior para aprovechar las últimas mejoras en seguridad y rendimiento. Si deseas usar Docker Compose, asegúrate de tener al menos la versión 2.x, ya que las versiones anteriores han dejado de actualizarse.

Es útil tener conocimientos básicos del uso de la línea de comandos, así como conocimientos sobre cómo utilizar Docker Compose y Docker. Para configuraciones más amplias o escalables, también deberías familiarizarte con Kubernetes para orquestar contenedores a nivel profesional.

Ejecutar WordPress en contenedores Docker

Una instalación de WordPress requiere tres componentes:

  • El software de WordPress
  • Una base de datos MySQL o MariaDB
  • Los pasos finales de instalación a través del navegador

En los ejemplos siguientes, WordPress y MySQL/MariaDB se ejecutan en contenedores separados pero enlazados. El contenedor con WordPress se vincula a un puerto del host para que puedas acceder a él desde tu navegador.

Ejecutar un contenedor MySQL/MariaDB

Una vez iniciado Docker, el primer paso es configurar la base de datos. Para ello, primero ejecuta un contenedor llamado my-db. Puedes usar tanto MySQL como MariaDB, ya que MariaDB es compatible con MySQL.

MySQL

Inicia el contenedor con el comando:

sudo docker run --name my-db -e MYSQL_ROOT_PASSWORD=CONTRASEÑA_SEGURA -d mysql:latest

MariaDB

Inicia el contenedor con el comando:

sudo docker run --name my-db -e MYSQL_ROOT_PASSWORD=CONTRASEÑA_SEGURA -d mariadb:latest
Nota

Asegúrate de utilizar una contraseña segura para tu base de datos. Guardar contraseñas como variables de entorno puede suponer un riesgo de seguridad. Es preferible utilizar un Docker Secret o un archivo de configuración protegido.

Crear la base de datos

Una vez que hayas creado tu contenedor, debes crear una base de datos que utilizarás para tu instalación de WordPress.

MySQL

Conéctate a tu contenedor de base de datos recién creado con el siguiente comando:

docker exec -it my-db mysql -u root -p

Crea una base de datos:

CREATE DATABASE wordpress-db;

MariaDB

Conéctate a tu contenedor de base de datos recién creado con el siguiente comando:

docker exec -it my-db mariadb -u root -p

Crea una base de datos:

CREATE DATABASE wordpress-db;

Ejecutar un contenedor de WordPress

Ahora ejecuta un contenedor con la imagen oficial de WordPress, asignado al puerto 8080 y enlazado con la base de datos.

Dos aclaraciones:

  • Si usas un firewall, puede que tengas que permitir el acceso al puerto 8080.
  • Si ya tienes otro servicio ejecutándose en el puerto 8080, puedes elegir otro puerto en el host.

El comando varía ligeramente dependiendo de si está utilizando MySQL o MariaDB:

MySQL

Inicia un contenedor de WordPress con el siguiente comando:

sudo docker run --name my-wordpress -p 8080:80 --link my-db:mysql -d wordpress:latest

MariaDB

Inicia un contenedor de WordPress con el siguiente comando:

sudo docker run --name my-wordpress -p 8080:80 --link my-db:mariadb -d wordpress:latest

Existen muchas otras variables de entorno que puedes agregar a este comando si deseas sobrescribir los valores predeterminados, incluyendo:

  • -e WORDPRESS_DB_HOST=[hostname]: por defecto, se utiliza la dirección IP y el puerto del contenedor MySQL/MariaDB enlazado. Esta variable permite conectar con una base de datos MySQL/MariaDB alojada en otro servidor.
  • -e WORDPRESS_DB_USER=[username]: el valor por defecto es root.
  • -e WORDPRESS_DB_PASSWORD=[password]: por defecto, se utiliza la variable de entorno MYSQL_ROOT_PASSWORD del contenedor MySQL/MariaDB enlazado.
  • -e WORDPRESS_DB_NAME=[name]: el valor predeterminado es “wordpress”.

Para una mayor seguridad, puede ser útil no ejecutar los contenedores en la red estándar de puente. En su lugar, se puede utilizar una red propia:

docker network create my-wp-network
docker run --name my-db --network my-wp-network -e MYSQL_ROOT_PASSWORD=CONTRASEÑA_SEGURA -d mysql:latest
docker run --name my-wordpress --network my-wp-network -p 8080:80 -d wordpress:latest
bash

Aquí, tus contenedores están más aislados de otros contenedores, lo que reduce el riesgo de conexiones no deseadas. Además, las reglas de red pueden configurarse con más detalle, por ejemplo, mediante reglas especiales de cortafuegos o el uso de un proxy inverso.

Finalizar la instalación desde el navegador

Para completar los últimos pasos de la instalación, debes acceder al contenedor de WordPress a través de un navegador.

En el ejemplo anterior, hemos asignado el puerto 8080 del host al puerto 80 (Webservices) del contenedor. De este modo, puedes acceder al contenedor desde un navegador utilizando la dirección IP o la URL del servidor:

  • http://<ip-del-servidor>
  • http://example.com

Accede a esa URL en el navegador, selecciona el idioma de instalación y haz clic en Continue (Continuar).

Imagen: Captura de pantalla de la selección de idioma en Wordpress
Ahora puedes seleccionar el idioma de instalación desde tu navegador.

En la siguiente página recibirás una indicación que te preparará para la instalación adicional. Haz clic en el botón “Let’s go!” para continuar.

Imagen: Captura de pantalla del aviso de instalación en Wordpress
El aviso de instalación de WordPress te informa sobre el siguiente paso del proceso de configuración.

Introduce los datos de tu base de datos para generar el archivo wp-config.php.

Imagen: Captura de pantalla de la conexión a la base de datos de Wordpress
Introduce la información solicitada sobre tu base de datos.

Ten en cuenta que el usuario predeterminado, salvo que indiques lo contrario, es “root”. Introduce aquí el nombre de la base de datos que has creado y la contraseña que hayas elegido. Al hacer clic en “Submit” (Enviar) continuarás con el proceso de instalación.

Imagen: Captura de pantalla de la instalación de WordPress: información sobre la página web de WordPress
Introduce los datos requeridos para tu página web de WordPress.
  • Título de la página web: introduce el título de tu página web.
  • Nombre de usuario: este será el nombre de usuario principal con privilegios administrativos. Consejo: por seguridad, evita usar “Admin” o el nombre/URL de tu página como nombre de usuario.
  • Contraseña: anota esta contraseña antes de continuar.
  • Tu correo electrónico: dirección de correo electrónico asociada al usuario administrador principal.

Haz clic en el botón Install WordPress (Instalar WordPress) para finalizar la instalación.

Imagen: Captura de pantalla de la instalación completada
El mensaje de éxito indica que la instalación se ha completado correctamente.

Si la instalación se ha llevado a cabo con éxito, recibirás un mensaje de confirmación y ya podrás proceder a iniciar sesión en WordPress.

Ejecutar WordPress con Docker Compose

El uso de Docker Compose para ejecutar WordPress también es una opción. Puedes encontrar información sobre la instalación y el uso de Docker Compose en nuestro artículo “Docker Compose y Docker Swarm: orquestación de contenedores Docker” para más información. Básicamente, esta herramienta te permite definir todos los servicios necesarios en un solo archivo y arrancarlos de forma conjunta.

Crear el archivo YAML

Primero, crea un directorio para tu proyecto y accede a él:

sudo mkdir wordpress 
cd wordpress

Crea un archivo YAML llamado docker-compose.yml con el siguiente comando:

sudo nano docker-compose.yml

El contenido del archivo varía ligeramente dependiendo de si usas MySQL o MariaDB.

MySQL

Agrega lo siguiente al archivo:

wordpress: 
    image: wordpress:latest 
    links: 
        - wordpress_db:mysql 
    ports: 
        - 8080:80 
wordpress_db: 
    image: mysql 
    environment: 
        MYSQL_ROOT_PASSWORD: CONTRASEÑA_SEGURA

Guarda y cierra el archivo.

MariaDB

Agrega lo siguiente al archivo:

wordpress: 
    image: wordpress:latest 
    links: 
        - wordpress_db:mariadb 
    ports: 
        - 8080:80 
wordpress_db: 
    image: mariadb 
    environment: 
        MYSQL_ROOT_PASSWORD: CONTRASEÑA_SEGURA

Guarda y cierra el archivo.

Iniciar los contenedores

A continuación, usa Docker Compose para iniciar estos contenedores con el siguiente comando:

sudo docker-compose up -d

Con este comando puedes verificar si los contenedores se han creado:

sudo docker-compose ps

Para completar la instalación, visita el contenedor de WordPress en un navegador. Utiliza la dirección IP o la URL del servidor:

  • http://192.168.0.1
  • http://example.com

Kubernetes para despliegues escalables de WordPress

Para configuraciones más grandes y entornos de producción, puedes utilizar Kubernetes (K8s). Con Kubernetes, los contenedores de WordPress pueden orquestarse y gestionarse automáticamente a través de varios nodos. El uso de un clúster de Kubernetes ofrece ventajas como escalado automático, mecanismos de autorrecuperación (self-healing) y gestión centralizada de recursos. Una forma de implementación es mediante Helm, un gestor de paquetes para Kubernetes:

helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-wordpress bitnami/wordpress --set service.type=LoadBalancer
bash

Esto garantiza una implementación de WordPress a prueba de fallos y escalable con balanceo de carga o load balancing, actualizaciones automáticas y soporte de conmutación por error.

New call-to-action
¿Le ha resultado útil este artículo?
Ir al menú principal