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
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:
Script run
#!/bin/bash echo "Iniciamos docker" sudo service docker start echo "Levatamos contenedores docker desde docker-compose.yml" docker-compose up
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:
sed -e 's/https:\/\/DOMINIO\.com/http:\/\/localhost:8001/g' DOMINIO-servidor.sql > DOMINIO-local.sql
Ejecutamos importación:
docker exec -i mysql-container mysql -uuser -phttps://www.youtube.com/watch?v=ZOn1xwSUsSApassword name_db < DOMINIO-local.sql
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:
docker exec -i mysql-container mysql -uuser -ppassword name_db -e 'DROP DATABASE wordpress;'
Crear base de datos:
docker exec -i mysql-container mysql -uuser -ppassword -e 'CREATE DATABASE wordpress character set utf8;'
Depurar.
Mostrar mensajes de error.
Activamos registro de errores desde wp-config.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);
Ejecutamos:
sudo docker exec -ti APPNAME bash tail -f wp-content/debug.log
