¿Qué te parece usar un server virtual con Ubuntu server desde VirtualBox para crear un laboratorio aislado de WordPress operativo 100% utilizando contendores de Docker? En este post guiarte a través de los pasos para lanzar un contenedor Docker en Ubuntu Server que contenga WordPress para usarlo como laboratorio de pruebas. Aquí te detallo los pasos generales:
Partimos de la base de que tengas creado una máquina virtual usando VirtualBox, por ejemplo. Es muy sencillo, crear el server virtual e instalar Ubuntu server desde la web y una vez arrancado el server seguir los pasos siguientes.
- Instalar Docker (si no lo tienes ya instalado):
- Primero, actualiza tu lista de paquetes:
sudo apt update
- Instala algunos paquetes de requisito previo que permitan a apt usar paquetes a través de HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common
- Añade la clave GPG para el repositorio oficial de Docker a tu sistema:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- Añade el repositorio de Docker a las fuentes de APT:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
- Actualiza tu base de datos de paquetes e instala Docker:
bash sudo apt update sudo apt install docker-ce
- Asegúrate de que Docker se esté ejecutando:
sudo systemctl status docker
- Instalar Docker Compose:
- Descarga la versión más reciente de Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- Aplica permisos ejecutables al binario:
sudo chmod +x /usr/local/bin/docker-compose
- Configurar el contenedor de WordPress:
- Crea un directorio para tu proyecto:
mkdir mi_wordpress && cd mi_wordpress
- Crea un archivo
docker-compose.yml
en tu directorio: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:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
- En este archivo, se define un servicio para WordPress y otro para MySQL. Se mapea el puerto 8000 de tu host al puerto 80 en el contenedor de WordPress.
- Lanzar los contenedores:
- Desde tu directorio de proyecto (
mi_wordpress
), ejecuta:sudo docker-compose up -d
- Esto descargará las imágenes necesarias y arrancará los contenedores.
- Acceder a WordPress:
- Una vez que los contenedores estén en ejecución, deberías poder acceder a WordPress yendo a
http://<tu_ip_ubuntu>:8000
en tu navegador.
- Usar como laboratorio de pruebas:
- Ahora puedes usar este entorno para experimentar con WordPress, probar temas, plugins, etc. Todos tus cambios estarán aislados dentro del contenedor y puedes reiniciar desde cero simplemente eliminando y recreando los contenedores.
En la consola Ubuntu puedes ver con : sudo docker ps , los dos contendores ejecutandose. Esta es la magia de los contendores, y luego comprobar que accedes al wordpress para inciarlo desde un navegador.
Para detener y reiniciar el contenedor de WordPress que creaste con Docker Compose y asegurarte de que tus cambios (como entradas, temas, etc.) persistan entre reinicios, puedes seguir estos pasos:
Detener los contenedores:
Para detener los contenedores (WordPress y la base de datos MySQL), usa el siguiente comando en el directorio donde se encuentra tu archivo docker-compose.yml
:
sudo docker-compose down
Este comando detendrá y eliminará los contenedores, pero no te preocupes, tus datos no se perderán porque están almacenados en volúmenes que Docker Compose ha creado.
Reiniciar los contenedores:
Para reiniciar tus contenedores, simplemente navega nuevamente al directorio de tu proyecto donde se encuentra el archivo docker-compose.yml
y ejecuta:
sudo docker-compose up -d
Esto iniciará los contenedores nuevamente. Si no has eliminado los volúmenes de datos manualmente, todos tus cambios previos (temas, plugins, entradas, etc.) deben estar intactos y disponibles nuevamente.
Persistencia de datos:
Docker Compose maneja la persistencia de datos utilizando volúmenes. En el archivo docker-compose.yml
que proporcioné anteriormente, se define un volumen llamado db_data
para la base de datos MySQL:
volumes:
db_data: {}
Este volumen almacena los datos de la base de datos fuera del ciclo de vida del contenedor. Esto significa que incluso si detienes y eliminas el contenedor de la base de datos, los datos en sí mismos no se pierden y estarán disponibles la próxima vez que inicies el contenedor. Lo mismo ocurre con los archivos y configuraciones de WordPress, que se almacenan dentro del contenedor de WordPress pero referenciados al volumen, lo que permite su persistencia.
Notas adicionales:
- Backup y restauración: Aunque tus datos están persistentes, siempre es una buena práctica realizar copias de seguridad regularmente, especialmente si estás utilizando este entorno para pruebas importantes o desarrollo.
- Administración de volúmenes: Si alguna vez necesitas eliminar completamente tus datos y empezar desde cero, puedes eliminar los volúmenes utilizando
docker volume rm
seguido del nombre del volumen. Ten cuidado con este comando, ya que eliminará todos los datos almacenados. - Modificaciones: Si realizas cambios en tu archivo
docker-compose.yml
o deseas actualizar las imágenes a versiones más recientes, puedes hacerlo y luego usardocker-compose up -d
para aplicar los cambios. Docker Compose recreará los contenedores según sea necesario.
Siguiendo estos pasos, puedes detener, iniciar y persistir tus datos en el entorno de WordPress utilizando Docker y Docker Compose. Esto te proporciona un sistema flexible y robusto para pruebas y desarrollo.
Recuerda que estos pasos son una guía general y los detalles pueden variar dependiendo de tu configuración específica y las versiones de software. Asegúrate de consultar la documentación oficial de Docker y WordPress para obtener información más detallada.