|
Introduccion
WordPress es un sistema de administracion de contenido (CMS) de codigo abierto. Hay multiples opciones para desplegar algun sitio con WordPress, desde opciones adminsitradas hasta implementaciones propias dentro de un servidor en donde se tendria todo el control.
Normalmente al desplegar un sitio con WordPress en un servidor requiere instalar el stack LAMP (Linux, Apache, MySQL y PHP) o LEMP (Linux, Nginx, MySQL y PHP), sin embargo preparar el stack sobre el servidor puede llevar mucho tiempo y ser susceptible a errores cuando se realiza manualmente.
Para esto existen varias alternativas para automatizar y agilizar la instalación y el despliegue. En esta ocasión se va a mostrar como realizar el despliegue con Docker y Docker compose para desplegar un sitio con WordPress usando el stack LEMP.
Para realizar este proceso debemos tener instalados Docker, para esto se puede seguir los siguientes pasos para instalar Docker en Ubuntu 20.04.
Una vez tenemos instalado Docker vamos a descargar el codigo del siguiente repositorio https://github.com/pedroporras/wp-fpm-deploy.git
Dentro del contenido que se descarga vamos a tener dos archivos.
El principal wp-fpm-stack.yml el cual tendra toda la definicion de los servicios que se van a desplegar, para esto vamos a desplegar 4 servicios.
Detalle de servicios desplegados
WordPress: En el servicio de WordPress vamos a seleccionar una de las imagenes oficiales soportadas por WordPress. La version que se selecciona esta sobre PHP-FPM. Para este caso se selecciono una version sobre Debian, sin embargo se puede cambiar la imagen y usar la version de alpine (wordpress:fpm-alpine). Adicional debemos almacenar la informacion de los archivos, para estos especificamos que almacene la informacion dentro de un volumen en docker y adicional queremos tener acceso a tres carpetas directamente desde el servidor, para esto asociamos las rutas de plugins, themes y uploads a la carpeta del servidor.
MySQL: En el servicio de MySQL vamos a usar el mismo ejemplo que muestran en la imagen oficial de Docker soportada por WordPress, adicional la informacion de MySQL se debe preservar aun cuando se reinicien los contenedores, para estos especificamos que almacene la informacion dentro de un volumen en docker.
Nginx: En el servicio de de Nginx vamos a usar Nginx como servidor Web, sin embargo de la misma forma se puede cambiar y usar una imagen de docker de Apache y usar FastCGI (FPM) para publicar la aplicación de WordPress. Para este caso en la imagen de Nginx vamos conectarnos al puerto 9000 el cual es el puerto que expone el servicio de WordPress, luego en el servicio de Nginx exponemos el puerto 80, para este caso asociamos el puerto 9000 del servidor al puerto 80 expuesto por el servicio. Adicional el servicio de Nginx debe poder acceder a los archivos del servicio de WordPress. Adicional montamos el archivo de configuracion de Nginx.
Adminer: En el servicio de Adminer vamos a usar Adminer como herramienta para administrar la base de datos.
Dentro de las especificaciones de todos los servicios se esta indicando que los logs que genera cada servicio tengan un tamaño maximo de 10 Megas y que sean un maximo de 5 archivos, de esta forma evitamos que el almacenamiento del servidor se agote por generar y almacenar logs.
Despliegue
A este punto podemos realizar el despligue de WordPress ejecutando el siguiente comando
docker-compose up -d