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
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»
¿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.