>

Desarrollo WordPress en local con Docker

Fernan Díez     Colaboraciones    05/03/2019

Desarrollar nuestros proyectos con WordPress puede ahorrarnos mucho tiempo al disponer de una extensa documentación y de una gran comunidad que soporta el software, pero, como cualquier desarrollador no estamos exentos de problema derivados del propio entorno de trabajo que utilizamos o que compartimos.

Es más que habitual realizar las pruebas de funcionamiento en nuestro entorno local pero encontrarnos con incompatibilidades a la hora de subir el proyecto a producción o cualquier otro sistema. En muchas ocasiones es un punto muy complicado de salvar, pero la virtualización nos ofrece disponer de características comunes definidas a demanda para equiparar nuestro entorno local con otros escenarios. En este sentido, existen softwares como Docker que facilitan enormemente esta tarea de preparación y despliegue de proyectos, incluidos aquellos basados en WordPress.

¿Qué es Docker?

Docker es un sistema de código abierto que nos permite desplegar aplicaciones dentro de contenedores de software mediante la virtualización. En estos contenedores, que además, son portables, podemos almacenar todos los elementos de software necesarios para poder hacer correr aquella aplicación con la que queramos trabajar.

De este modo, independientemente de la máquina matriz donde instalemos el contenedor, nuestra aplicación podrá funcionar de modo idéntico a como lo haría en cualquier otro entorno.

Cuando hablamos de WordPress, podemos hacernos rápidamente a la idea de las ventajas que nos podrá aportar a nuestros desarrollos especialmente si trabajamos con más profesionales en un mismo proyecto.

Desarrollo WordPress local Docker

¿Qué ventajas tiene Docker para el desarrollo WordPress?

Como desarrolladores de temas o plugins para WordPress podremos centrarnos en la creación de código sin preocuparnos de si funcionará o no en el entorno de staging o producción.

Es más ligero que otros sistemas de virtualización como VirtualBox o VMware, y además, en este caso hablamos de un sistema que además de ser gratuito es open source. Siendo multiplataforma podemos hacerlo correr en nuestro sistema operativo independientemente de que sea Mac, Linux o Windows.

Mediante las imágenes y los repositorios podemos crear nuestros propios entornos de trabajo y compartirlos con aquellas personas con las que queramos trabajar en común, o directamente trabajar con sistemas publicados en abierto listos para utilizar.

Es extremadamente ligero, permitiendo gestionar diferentes contenedores de Docker en una misma máquina, pudiendo realizar tests en diferentes entornos sin mayores complicaciones.

Podemos elegir el entorno de versiones que necesitemos por ejemplo para Apache y PHP, o añadir software para el desarrollo como WP-CLI, del que ya hemos hablado tiempo atrás.

Si estás desarrollando proyectos WordPress en local en este mismo momento, sin duda Docker es una de las opciones que deberías plantearte para mejorar tu entorno de trabajo. Es posible que hayas probado opciones como WampServer, MAMP, DesktopServer u otras alternativas, pero Docker sin duda se presenta como la opción definitiva.

¿Cómo crear un contenedor Docker para WordPress?

A continuación haré un repaso de cómo podemos instalar y configurar Docker con un contenedor WordPress para nuestros proyectos.

Instalando Docker

En primer lugar deberemos instalar Docker para nuestro sistema operativo, algo realmente sencillo puesto que disponemos de instaladores para Mac o Windows que nos guiarán en el proceso de instalación.

Instalando Compose Docker

A continuación, y para continuar con el entorno de trabajo que estamos preparando, añadiremos Compose para Docker siguiendo las instrucciones del sitio web oficial. Compose nos permite crear aplicaciones con múltiples contenedores, con un fichero de configuración previamente establecido y arrancar las mismas a través de una serie de órdenes sencillas desde la terminal.

Si estás utilizando las últimas versiones de escritorio de Windows o Mac, debes saber que Compose ya se encuentra incluido en este tipo de instalaciones por lo que podrás obviar el paso anterior

Para comprobar si está instalado y la versión de Compose Docker que estás utilizando puedes usar el siguiente comando en la terminal:

docker-compose -v

Para crear nuestro entorno WordPress, necesitaremos de dos contenedores principales. Uno de ellos deberá contener un servidor web, por ejemplo, Apache, y el otro la base de datos MySQL para hacer funcionar nuestra instalación.

Creando nuestro proyecto WordPress

En primer lugar deberemos crear un directorio vacío para nuestro proyecto. En este directorio se incluirá toda la información de nuestra imagen del proyecto y los contenedores necesarios.

Necesitaremos a continuación un archivo docker-compose.yml con la configuración completa para lanzar una instalación de WordPress. El archivo “.yml” es el que define las instancias que vamos a incluir en nuestra imagen, siendo estas un servidor web con la instalación de WordPress y un contenedor con la base de datos MySQL.

En este ejemplo que podemos utilizar tenemos toda la información necesaria:

version: '3.3'

services:

  db:

    image: mysql:5.7

    volumes:

      - db_data:/var/lib/mysql

    restart: always

    environment:

      MYSQL_ROOT_PASSWORD: somewordpress

      MYSQL_DATABASE: wordpress

      MYSQL_USER: wordpress

      MYSQL_PASSWORD: wordpress

  wordpress:

    depends_on:

      - db

    image: wordpress:latest

    ports:

      - "8080:80"

    restart: always

    environment:

      WORDPRESS_DB_HOST: db:3306

      WORDPRESS_DB_USER: wordpress

      WORDPRESS_DB_PASSWORD: wordpress

      WORDPRESS_DB_NAME: wordpress

      

Revisando el archivo de configuración anterior nos encontramos con la la declaración del contenedor de MySQL en su versión 5.7 del cual depende el contenedor de WordPress que lanzará la última versión estable del CMS.

El contenedor de WordPress es directamente descargado desde el repositorio oficial de Docker cuya imagen podemos consultar en el siguiente enlace.

En el caso de que queráis utilizar un fichero de configuración con otras opciones más avanzadas os dejo algunos ejemplos de Github que incluyen contenedores alternativos, otras versiones, y algunas mejoras sobre el ejemplo incluido:

https://github.com/chriszarate/docker-compose-wordpress/blob/master/docker-compose.yml

https://github.com/nezhar/wordpress-docker-compose/blob/master/docker-compose.yml

https://github.com/tfirdaus/wp-locker/blob/develop/docker-compose.yml

Arrancar el contenedor

Una vez que tenemos lista nuestra configuración de Compose Docker vamos a arrancar la instalación y descarga de todo lo necesario por primera vez mediante el siguiente comando que ejecutaremos en la terminal desde el propio directorio en el que estamos trabajando.

docker-compose up -d

Cuando finalice el proceso se lanzará en nuestro navegador la dirección URL siguiente cargando la pantalla de bienvenida e instalación de WordPress:

http://localhost:8080

Si queremos crear instancias con parámetros diferentes y que se encuentren trabajando al mismo tiempo, podemos simplemente repetir los pasos anteriores, modificando el fichero de configuración “.yml”.

En este caso concreto, es interesante modificar los puertos de Apache y MySQL para evitar posibles conflictos, por lo que les asignaremos un valor diferente a medida que vayamos creando y lanzando contenedores en paralelo.

Comando útiles para Docker

Desarrollando con Docker podemos automatizar algunas tareas o hacer que sean más sencillas de lo que podría parecer a la hora de trabajar en un entorno local. Te dejo algunos comandos de utilidad que a buen seguro tendrás a bien utilizar.

docker-compose pull
docker-compose up -d

Permite actualizar las versiones a la última estable de nuestros contenedores, por ejemplo si queremos actualizar WordPress o MySQL:.

docker-compose start

Arranca los contenedores parados en el directorio en el que estamos trabajando.

docker-compose stop

Para los contenedores en funcionamiento en nuestro directorio de trabajo.

docker-compose config

Valida que la configuración sea correcta y muestra el archivo de configuración establecido.

docker-compose ps

Lista todos los contenedores incluidos en el directorio de trabajo.

docker-compose down

Detiene y elimina todos los contenedores, teniendo en cuenta que se restablecerá toda la información a su punto de partida, base de datos incluida.

Conclusiones

Si queremos ofrecer un mejor servicio a nuestros clientes, y si queremos ser realmente competitivos en nuestro trabajo debemos tener en cuenta que en ocasiones los pequeños detalles son los que marcan la diferencia.

En este caso, poder disponer de un entorno local de trabajo adaptado a nuestras necesidades y que nos permita agilizar labores cotidianas en nuestros desarrollos de temas y plugins podrá hacer que podamos ocuparnos de otro tipo de problemáticas más significativas en el proyecto que estamos abordando.

Además, en un mundo conectado y donde trabajar en remoto está al orden del día podemos salvar los problemas que nos encontramos con los diferentes entornos con herramientas como Docker.

Dicho esto, no tienes excusa para darle una oportunidad. No te arrepentirás.


Sobre el autor

Fernan Díez   

Desarrollo Web WordPress & Marketing Online Publico 'WordPress Diario', un podcast sobre desarrollo web con WordPress y marketing online donde encontrarás consejos, herramientas y recomendaciones sobre todo lo que te puede interesar acerca del mundo del diseño web con WordPress, y el marketing digital.