WordPress con Docker en una Raspberry Pi

En este tutorial os voy a enseñar cómo montar un entorno de desarrollo local de WordPress con Docker en una Raspberry Pi, Orange Pi, Banana Pi o cualquier otro sistema basado en arm que funcione con Raspbian. Yo estoy usando una Orange Pi Zero de poco más de 10€.

Si vuestra placa es una Rasbberry Pi y sólo vais a usarla con Docker, os aconsejo que empecéis por instalarle la imagen de Hypriot, si es cualquier otra, debéis aseguraros de estar ejecutando una versión de Raspbian con un kernel superior a 3.10. Para comprobarlo:

uname -a

La respuesta

Linux orangepizero 4.14.15-sunxi #28 SMP Mon Jan 29 07:24:48 CET 2018 armv7l armv7l armv7l GNU/Linux

1. Instalar Docker

Afortunadamente Docker tiene un instalador fantástico que se carga con una línea:

curl -sSL https://get.docker.com | sh

Una vez que termine sólo hay que asegurarse de añadir nuestro usuario al grupo docker:

sudo usermod -aG docker $USER

2. Instalar docker-compose

Aunque no es estrictamente necesario, docker-compose hace las cosas mucho más cómodas.

sudo apt-get update && sudo apt-get install docker-compose

3. Crear el fichero de configuración de docker-compose

Creamos el directorio desde el que vamos a editar la web:

cd ~
mkdir wordpress
cd wordpress

Ahora tenemos que crear el fichero de configuración que va a utilizar docker-compose para levantar los servicios. Sólo tenemos que utilizar cualquier editor para crear un fichero docker-compose.yml con este contenido (ojo, en los ficheros YML, los espacios son importantes).

version: '2'

services:

  wordpress:
    image: arm32v7/wordpress
    restart: always
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_PASSWORD: password
    volumes:
      - ./html:/var/www/html
  mysql:
    image: hypriot/rpi-mysql
    restart: always
    ports:
    - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: password
    volumes:
    - ./wpdb:/var/lib/mysql/wordpress
@nilovelez

(ver el gist en GitHub)

4. ¡Al turrón!

Ya tenemos todo listo para empezar a trabajar en WordPress con Docker, sólo queda iniciar nuestro contenedor:

docker-compose up -d

Si todo ha ido bien, docker va a descargar las imágenes de los contenedores, va a crear una instancia de cada uno y los va a levantar. Como en el docker-compose.yml hemos establecido dos directorios locales para la persistencia de los ficheros de wordpress y de mariadb (MySQL), nos vamos a encontrar con dos carpetas nuevas dentro de nuestro directorio wordpress:

  • html está mapeado al directorio raiz del servidor web del contenedor de WordPress, dentro están los ficheros habituales: .htaccess, wp-config.php /wp-content/ …
  • wpdb contiene las tablas de la base de datos wordpress. No se pueden editar directamente, pero las puedes copiar de un servidor a otro.

¿Y ahora cómo trabajo con esto?

Para iniciar sesión en WordPress, espera un par de minutos a que terminen de iniciarse los contenedores y entra desde cualquier ordenador de la red a la IP de tu Raspberry. Deberías encontrarte con el «famoso proceso de instalación de WordPress en cinco minutos»

Bienvenida de un contenedor Docker con WordPress

¿Y cómo accedo a los ficheros?

Si haces un ls -la en el directorio wordpress, verás que mantiene propietario www-data:www-data del directorio original del que ha salido. Si quieres poder editar el contenido y que WordPress siga funcionando, tienes cuatro opciones:

  • Hacer un sudo -i , trabajar como root y restaurar el propietario de lo que rompas como un chown -R www-data:www-data
  • Iniciar una sesión como www-data con sudo -u www-data bash
  • Hacerle un chmod -r 777 html al directorio. No es tan terrible como suena si sólo vas a trabajar en local.
  • Iniciar sesión dentro del contenedor con docker exec -it wordpress_wordpress_1 bash y trabajar directamente desde dentro.

¿Y para acceder a la base de datos?

Si no las has cambiado al crear el fichero docker-compose.yml, estas son las credenciales para conectarte al servidor de mase de datos:

  • Servidor: mysql (o la IP de la Raspberry)
  • Puerto: 3306
  • Base de datos: wordpress
  • Usuario: root
  • Contraseña: password

El contenedor no trae phpmyadmin instalado, así que puedes instalarlo tú o simplemente conectarte con un gestor externo, como MySQL Workbench.

Conectando con MySQL WorkBench a un contenedor WordPress con Docker