Despliegue de WordPress con Docker y Docker Compose

Implantación de Aplicaciones Web

José Juan Sánchez Hernández

Curso 2024/2025

1 Despliegue de WordPress usando contenedores Docker y Docker Compose

En esta práctica tendremos que realizar la implantación de un sitio WordPress en Amazon Web Services (AWS) haciendo uso de contenedores Docker y la herramienta Docker Compose.

1.1 Tareas a realizar

A continuación se describen muy brevemente algunas de las tareas que tendrá que realizar.

  1. Crear una máquina virtual Amazon EC2.

  2. Instalar y configurar Docker y Docker compose en la máquina virtual.

  3. Crear un archivo docker-compose.yml para poder desplegar los servicios de WordPress, MySQL, phpMyAdmin y HTTPS-portal.

  4. Buscar cuál es la dirección IP pública de su instancia en AWS y comprobar que puede acceder a los servicios de WordPress y phpMyAdmin desde una navegador web.

  5. Una vez que tenga el archivo docker-compose.yml configurado de forma correcta, tendrá que añadir el servicio https-portal para poder acceder al servicio de WordPress a través de un nombre de dominio por HTTPS.

1.2 Requisitos de la instancia EC2 en AWS

Se recomienda que la instancia EC2 de AWS tenga como mínimo las siguientes características:

1.3 Requisitos del archivo docker-compose.yml

1.3.1 Imágenes

Deberá utilizar las imágenes de Docker Hub que se indican para cada uno de los servicios:

Imagen de WordPress de Bitnami

En Docker Hub puede encontrar más información sobre las variables de entorno que se pueden utilizar con la imagen bitnami/wordpress.

Otra forma de conocer cuáles son las variables de entorno y los valores que tienen asignados por defecto es crear un contenedor con la imagen de bitnami/wordpress y examinar el contenido de las variables de entorno.

Paso 1. Crear un contenedor en modo interactivo con la imagen de bitnami/wordpress.

docker run -it bitnami/wordpress /bin/sh

Paso 2. Una vez dentro del contenedor puede consultar el valor de las variables de entorno.

env

En nuestro caso nos interesan las siguientes variables de entorno.

WORDPRESS_DATABASE_HOST=mariadb
WORDPRESS_DATABASE_USER=bn_wordpress
WORDPRESS_PASSWORD=bitnami
WORDPRESS_DATABASE_NAME=bitnami_wordpress
WORDPRESS_BLOG_NAME="User's blog"
WORDPRESS_USERNAME=user
WORDPRESS_PASSWORD=bitnami
WORDPRESS_EMAIL=user@example.com

Estas son las variables de entorno que deberá utilizar en su archivo docker-compose.yml y configurar .env.

1.3.2 Networks

Los servicios definidos en el archivo docker-compose.yml deberán usar dos redes:

En la red frontend-network estarán los servicios:

Y en la red backend-network sólo estará el servicio:

Sólo los servicios que están en la red frontend-network expondrán sus puertos en el host. Por lo tanto, el servicio de mysql no deberá estar accesible desde el host.

A continuación se muestra un diagrama con las redes y los servicios que tiene que crear:

1.3.3 Docker restart policies

Deberá utilizar alguna política de reinicio para que los contenedores se reinicien cada vez que se detengan de forma inesperada.

Se recomienda consultar la documentación oficial de la opción restart.

1.3.4 Variables de entorno

Deberá hacer uso de un archivo .env para almacenar todas las variables de entorno que necesite en el archivo docker-compose.yml.

En la documentación oficial puede encontrar más información sobre cómo hacer uso de variables de entorno en el archivo docker-compose.yml.

1.3.5 Orden en el que se inician los servicios

Deberá indicar el orden en el que se deben iniciar los servicios con la opción depends_on. Se recomienda la lectura del artículo Control startup and shutdown order in Compose

Para garantizar que el servicio de MySQL está listo para aceptar conexiones, deberá utilizar la opción healthcheck del archivo docker-compose.yml. Se recomienda la lectura del artículo Healthcheck. Compose file version 3 reference.

1.4 Entregables

En esta práctica habrá que entregar un documento técnico con la descripción de los pasos que se han llevado a cabo durante todo el proceso.

El documento debe incluir como mínimo lo siguientes contenidos:

2 Referencias

3 Licencia

Licencia de Creative Commons
Esta página forma parte del curso Implantación de Aplicaciones Web de José Juan Sánchez Hernández y su contenido se distribuye bajo una licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.