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