WordPress en local con docker

docker+wordpress
Table of Contents

Vamos a crear una instalación de cero de wordpress con docker.

Se crearán volúmenes tanto de la base de datos como de los ficheros
de wordpress, permitiendo su persistencia y mantener los cambios que
hagamos en el proyecto.

Instalación de docker.

https://docs.docker.com/installation/

Configuración.

Creamos fichero docker-compose.yml

[code lang=text]
version: '3.7'

services:
mysql:
image: mariadb:10
network_mode: bridge
container_name: mysql-gm
volumes:
- ./gm_db_data:/var/lib/mysql
restart: on-failure
environment:
MYSQL_ROOT_PASSWORD: password # Password MYSQL Root
adminer:
image: adminer
container_name: adminer-gm
network_mode: bridge
restart: always
ports:
- 8080:8080
depends_on:
- mysql
links:
- mysql
web:
image: wordpress
network_mode: bridge
container_name: wordpress-gm
restart: on-failure
volumes:
- ./html:/var/www/html
environment:
WORDPRESS_DB_NAME: wordpress
ports:
- 8002:80
depends_on:
- mysql
links:
- mysql
volumes:
gm_db_data:
[/code]

Script run

[bash]
#!/bin/bash

echo "Iniciamos docker"
sudo service docker start

echo "Levatamos contenedores docker desde docker-compose.yml"
docker-compose up
[/bash]

Permisos de ejecución:

chmod +x run

Ejecutamos script run.

Vamos a http://localhost:8002 y configuramos wordpress.

En este caso nuestros los datos serían:

  • Nombre de la base de datos: wordpress
  • Host: mysql
  • Usuario: root
  • Password: password

Ahora tenemos:

  • WordPress en http://localhost:8002

  • Adminer en http://localhost:8080

Varios.

Importar base de datos.

Una vez tengamos la base de datos del servidor en local tendremos que
transformar las urls, ejemplo https://DOMINIO.com por http://localhost:8001.

Del fichero local hacemos una copia para local:

[bash]
sed -e 's/https:\/\/DOMINIO\.com/http:\/\/localhost:8001/g' DOMINIO-servidor.sql > DOMINIO-local.sql
[/bash]

Ejecutamos importación:

[bash]
docker exec -i mysql-container mysql -uuser -phttps://www.youtube.com/watch?v=ZOn1xwSUsSApassword name_db < DOMINIO-local.sql
[/bash]

Nota:
En mi caso he tenido problemas con la codificación de caracteres y he tenido
que hacerlo desde adminer.

Otros.

Borrar base de datos:

[bash]
docker exec -i mysql-container mysql -uuser -ppassword name_db -e 'DROP DATABASE wordpress;'
[/bash]

Crear base de datos:

[bash]
docker exec -i mysql-container mysql -uuser -ppassword -e 'CREATE DATABASE wordpress character set utf8;'
[/bash]

Depurar.

Mostrar mensajes de error.

Activamos registro de errores desde wp-config.php:

[php]
// Enable WP_DEBUG mode
define('WP_DEBUG', true);

// Enable Debug logging to the /wp-content/debug.log file
define('WP_DEBUG_LOG', true);

// Disable display of errors and warnings
define('WP_DEBUG_DISPLAY', true);

// Mostrar errores.
@ini_set('display_errors',1);

// Use dev versions of core JS and CSS files (only needed if you are modifying these core files)
define('SCRIPT_DEBUG', true);
[/php]

Ejecutamos:

[bash]
sudo docker exec -ti APPNAME bash
tail -f wp-content/debug.log
[/bash]

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

LesOlivex