WordPress es una de las herramientas de tipo CMS (Content Management system) más utilizados, hoy en día, para la construcción de sitios web. Veremos como podemos habilitar una instalación de esta herramienta en nuestro entorno local, con solo dos comandos (o uno solo…)
Cómo es lógico suponer, se requiere tener instalado Docker en nuestro sistema y haber ubicado los directorios que usaremos para almacenar la base de datos y las páginas web, aunque para este fin también podríamos usar volúmenes en lugar de directorios.
Como hemos visto se requieren dos contenedores, uno para el WordPress con el servidor web y el otro para la base de datos MySQL. Para activarlos, ejecutamos en la línea de comandos las siguientes dos instrucciones, cambiando antes, los valores de los parámetros para que se acomoden los requerimientos de proyecto, tales como nombre de la base de datos, usuario, password y directorios locales para almacenar el proyecto
# Contenedor de MySQL
docker run -d --name my-mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=secret \
-e MYSQL_DATABASE=wordpress \
-e MYSQL_USER=wordpress \
-e MYSQL_PASSWORD=wordpress \
-v $HOME/mysql-data:/var/lib/mysql \
mysql
# Contenedor de WordPress
docker run -d --name wordpress \
-p 8080:80 \
-e WORDPRESS_DB_HOST=192.168.0.107 \
-e WORDPRESS_DB_USER=wordpress \
-e WORDPRESS_DB_NAME=wordpress \
-e WORDPRESS_DB_PASSWORD=wordpress \
-v $HOME/worpress-data:/var/www/html \
wordpress
Recuerde que debe cambiar la dirección IP (192.168.0.107) por la dirección del equipo en el entorno local. Observe que usar localhost no debería funcionar, ya que se trata de una parámetro que le estamos pasando al contenedor de WordPress, y lo interpretaría como que debe buscar la base de datos dentro de el.
Una vez levantados los servicios podemos comenzar a trabajar accediendo a la dirección local en el puerto especificado:
Otra alternativa para levantar nuestra aplicación, que como sabemos requiere de dos componentes, es con el uso de Docker Compose. Esta herramienta viene instalada en la distribución de Docker para Windows y para Mac, pero en Linux es necesario instalarla por separado
curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# para verificar la instalación
docker-compose -v
Esta herramienta permite la gestión de aplicaciones conformadas por múltiples componentes mediante la definición de un archivo de configuración llamado docker-compose.yaml. Note que de esta forma ya no es necesario llevar cuenta de las IPs. En nuestro caso creamos este archivo con el siguiente contenido:
version: "3.9"
services:
mysql:
image: mysql:5.7
volumes:
- mysql_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: sserpdrow
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
ports:
-"3306:3306"
phpmyadmin:
depends_on:
- mysql
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mysql:3306
- PMA_USER=wordpress
- PMA_PASSWORD=wordpress
ports:
-"8000:80"
wordpress:
depends_on:
- mysql
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
restart: always
environment:
WORDPRESS_DB_HOST: mysql:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
ports:
- "8080:80"
volumes:
mysql_data: {}
wordpress_data: {}
Como se puede observar, este archivo define la creación de dos contenedores: mysql, phpmyadmin y wordpress. Además para cada uno de ellos define los volúmenes (mysql_data y wordpress_data) que servirán para persistir los cambios, es decir guardar los proyectos que se desarrollen con estas plataformas. De esta manera los contenedores se convierten en entornos desechables ya que lo importante siempre estará almacenado en los volúmenes.
Luego basta iniciar el servicio con la siguiente instrucción:
docker-compose up -d
Para detenerlo se utiliza:
docker-compose down
If you see mistakes or want to suggest changes, please create an issue on the source repository.
For attribution, please cite this work as
Sosa (2021, June 29). Blog de José R Sosa: WordPress con Docker. Retrieved from https://josersosa.github.io/personalweb/posts/2021-06-30-wordpress-con-docker/
BibTeX citation
@misc{sosa2021wordpress, author = {Sosa, José R}, title = {Blog de José R Sosa: WordPress con Docker}, url = {https://josersosa.github.io/personalweb/posts/2021-06-30-wordpress-con-docker/}, year = {2021} }