Cómo montar un sitio web con WordPress y MySQL/MariaDB en un minuto con Docker Desktop. Cómo desplegar los dos contendores WordPress y MySQL y cómo acceder al sitio web desde el equipo anfitrión (con la redirección de puertos). Indicamos cómo acceder al servidor de base de datos MySQL desplegado externamente y cómo eliminar todo el despliegue realizado en docker.

Requisitos para desplegar sitio web con WordPress en docker

Únicamente necesitaremos un equipo (Windows o Linux) con Docker Desktop. En el siguiente artículo explicamos cómo instalar Docker Desktop en un equipo con Windows:

Y en este otro en un equipo con Linux:

El equipo anfitrión con Docker debe tener conexión a Internet.

En este caso, el anfitrión con Docker Desktop es un equipo Windows 11, aunque todos los comandos docker que usaremos en este artículo funcionan exactamente igual para equipos con Linux.

Desplegar sitio web WordPress con Docker Desktop

Para desplegar un servidor con MySQL/MariaDB y WordPress en Docker, en primer lugar crearemos una carpeta en el equipo anfitrión y, dentro de esta carpeta, crearemos un fichero con el nombre compose.yaml y con el siguiente contenido:

Cambiaremos, como es lógico, los valores:

  • usuario_bd: por el nombre de usuario de la base de datos para acceso a las tablas de WordPress en MySQL.
  • contraseña_usuario_bd: contraseña para el usuario anterior.
  • nombre_bd : nombre de la base de datos (catálogo) de MySQL que contendrá las tablas de WordPress.
  • ports: en esta línea, redirigimos el puerto 8000 del equipo anfitrión al puerto 80 del equipo que se despliega en el contenedor docker. Podemos cambiar el puerto 8000 por otro.

Si quisiéramos permitir el acceso externo a la base de datos MySQL del despliegue, utilizaríamos este otro fichero compose.yaml para hacer el despliegue:

En el ejemplo anterior, usamos el puerto 3333 del equipo anfitrión para redireccionar al 3306 del equipo docker con MySQL.

En nuestro caso, hemos creado el fichero anterior en la carpeta C:\ProyectoA\WordPress, por lo tanto, abriremos una ventana de MS-DOS (símbolo de sistema) o una terminal de shell de comandos en Linux y accederemos a la carpeta creada:

Una vez en la carpeta que contiene el fichero compose.yaml con el contenido anterior, ejecutaremos el siguiente comando docker para desplegar todo el entorno. El despliegue será automático y tardará unos pocos minutos, si tenemos un equipo bien dimensionado y buena conexión a Internet, tardará segundos:

Como hemos comentado, de forma automática, se realizará la descarga de las imágenes (que son equipos Linux Ubuntu) y el despliegue de toda la infraestructura (servicios web y servicios de MySQL). En cuestión de minutos quedará disponible para su uso como servidor web:

Desplegar sitio web WordPress con Docker Desktop

Comprobaremos que se han desplegado los dos contenedores WordPress y MySQL ejecutando el comando docker:

También se puede usar el comando docker:

Nos mostrará los dos contenedores creados: worpress (wordpress-wordpress-1) y mysql:8.0 (wordpress-db-1).

Probando el servidor web con WordPress sobre docker

Para probar el acceso al servidor web desplegado, únicamente tendremos que abrir un navegador en el equipo anfitrión (el que tiene Docker Desktop instalado) y accederemos a la URL:

http://localhost:8000

Puesto que hemos redireccionado el puerto 8000 del equipo anfitrión al puerto 80 del contenedor docker, nos mostrará el sitio web en WordPress. En el primer inicio, nos mostrará la configuración inicial de WordPress:

Probando el servidor web con WordPress sobre docker

Introduciremos los datos básicos del sitio web WordPress:

Probando el servidor web con WordPress sobre docker

Y pulsaremos en «Instalar WordPress»:

Y con estos sencillos pasos, ya tendremos nuestro sitio web WordPress funcionando. Pulsaremos en «Acceder»:

Probando el servidor web con WordPress sobre docker

Introduciremos usuario y contraseña de acceso a WordPress (el establecido anteriormente):

Probando el servidor web con WordPress sobre docker

Y, desde la URL:

http://localhost:8000/wp-admin/

Accederemos a la gestión de WordPress para crear entradas, páginas, menús y establecer los temas y la personalización que deseemos:

Probando el servidor web con WordPress sobre docker

Acceso externo al MySQL del despliegue docker del WordPress

Si hemos usado el fichero compose.yaml para el acceso externo a MySQL (con puerto 3333), podremos usar cualquier cliente de MySQL, como por ejemplo MySQL WorkBench y acceder a la base de datos MySQL del contenedor docker desplegado. Para ello, desde el cliente MySQL, introduciremos los siguientes datos de conexión:

  • Hostname: dejaremos el de defecto 127.0.0.1 o bien «localhost».
  • Port: lo cambiaremos por 3333 (el puerto indicado para la imagen mysql:8.0 en el fichero compose.yaml.
  • Username: el usuario indicado en el fichero compose.yaml para la imagen mysql:8.0.
  • Password: la contraseña del usuario de acceso a MySQL, indicada en el fichero compose.yaml para la imagen mysql:8.0.
  • Default Shema: el nombre de la base de datos (catálogo o esquema) indicado en el fichero compose.yaml para la imagen mysql:8.0.

Pulsaremos en «Test Connection» para realizar una prueba de conexión:

Acceso externo al MySQL del despliegue docker del WordPress

Si todo es correcto, nos lo indicará con un mensaje:

Acceso externo al MySQL del despliegue docker del WordPress

Ahora podremos acceder a las tablas de WordPress alojadas en el servidor de MySQL de docker:

Acceso externo al MySQL del despliegue docker del WordPress

Persistencia de los datos, volúmenes en docker

Dado que hemos usado volúmenes al crear los contenedores y las imágenes, creando un volumen para la imagen wordpress:

/var/lib/docker/volumes/wordpress_db/_data

Y otro volumen para la imagen mysql:8.0:

/var/lib/docker/volumes/wordpress_db/_data

Los datos tanto de WordPress como de la base de datos MySQL quedarán almacenados en estos volúmenes y, aunque detengamos o eliminemos los contenedores e imágenes (siempre que no eliminemos expresamente los volúmenes) los datos quedarán almacenados, si volvemos a crear los contenedores y desplegar las imágenes en la misma ruta (con el mismo fichero compose.yaml), los datos se mantendrán.

Para mostrar los volúmenes de cada imagen, podemos usar los comandos:

Persistencia de los datos, volúmenes en docker

Eliminar el despliegue realizado en Docker

Si queremos eliminar por completo todo el despliegue anterior (se perderán todos los datos), ejecutaremos el siguiente comando docker (en la carpeta que contiene el fichero compose.yaml:

Y si queremos eliminar también los volúmenes, en este casó se eliminarían todos los datos de las dos imágenes, ejecutaremos el comando docker: