no sé qué salió mal cuando seguí estas instrucciones en un repositorio de github: https://github.com/richtabor/bloques-de-construccion
R. Primero, necesita un entorno de WordPress para ejecutar este complemento y comenzar el desarrollo de bloques. La forma más rápida de ponerse en marcha es utilizar la configuración de la ventana acoplable proporcionada. Instalar en pc docker-ce
y docker-compose
(si es necesario) siguiendo las instrucciones más recientes en el sitio de Docker.
B. Inicie Docker en su máquina.
C. En la carpeta de su preferencia, clone este proyecto e ingrese al directorio de trabajo:
git clone https://github.com/richtabor/building-blocks.git
cd building-blocks
D. Para iniciar esta instancia local de WordPress, ejecute dentro del proyecto: docker-compose up -d
. Una vez iniciado, WordPress ahora debería estar disponible en http://localhost:9999. Nota: Cuando hayamos terminado, ejecute docker-compose stop para detener esta configuración local.
Claramente seguí los pasos. Descargué Docker Desktop para Mac. Sin embargo, no estoy muy seguro de esto. docker-ce
y docker-compose
pero pensé que el escritorio docker para mac que descargué ya tiene esas cosas. así que corrí docker-compose up -d
y fui al localhost pero recibí este mensaje de error:
Error al establecer una conexión de base de datos
Así que miré docker-compost.yml en el repositorio de github que cloné en mi carpeta local y esto es lo que mostró:
version: '3.1'
services:
wordpress:
image: wordpress
ports:
- 9999:80
environment:
WORDPRESS_DB_PASSWORD: password
volumes:
- ./:/var/www/html/wp-content/plugins/building-blocks
- ./wp-content:/var/www/html/wp-content
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
Entonces, llegué a la conclusión de que tal vez haya un problema con el archivo docker-compose.yml.
¿Cómo puedo solucionar esto?
Bien, tienes instalada la aplicación docker mac, creo que esto debería ser suficiente para ejecutar un entorno docker wp local.
Encuentro la instalación de paquetes ocultos globalmente a través de la terminal usando https://brew.sh/ es útil
- Cree una nueva carpeta de proyecto local vacía, o idealmente un nuevo repositorio remoto de git para su proyecto, luego baje el repositorio vacío a su computadora. Como está en Mac, tiendo a mantener todas las carpetas de proyectos locales en el
Sites
carpeta en su directorio de usuario…


- En la carpeta del proyecto, cree un archivo llamado
uploads.ini
y agregarle este código…
file_uploads = On
memory_limit = 2000M
upload_max_filesize = 2000M
post_max_size = 2000M
max_execution_time = 600
- Cree una carpeta de temas vacía y asigne a la carpeta el mismo nombre que desea que sea en los entornos de servidor de ensayo y producción. estoy usando guna
portfolio
en este ejemplo.

- Antes de acoplar un tema, es mejor agregar algunos archivos a su carpeta de temas para que sea un tema válido, de lo contrario, es posible que no pueda activarlo…

- Asegúrate que
style.css
tiene un código de comentario de tema de WordPress válido…
/*
Theme Name: Portfolio
Author: Kristina Bressler
Version: 1.0
License: Private
*/
- Ahora vamos a crear nuestro
docker-compose.yml
archivo de configuración en nuestra carpeta de proyecto, vea los comentarios en el código a continuación…
version: '3.7'
# needed for mailhog
networks:
wordpress:
ipam:
config:
- subnet: 172.25.0.0/16
services:
# here is our mysql database container
db:
image: mysql:5.7
volumes:
# our persistent local database re routing
- ./db:/var/lib/mysql:delegated
# this is handy for dockering up from a mysql dumped existing database, not needed for new project
#- ./docker/db-dumps:/docker-entrypoint-initdb.d:delegated
ports:
- "3306:3306"
restart: always
environment:
# these can be the same for every local docker project
# never pass these to the staging or production wp-configs database settings
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
- wordpress
# here is our wordpress container
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
# our persistent local data re routing
# if you dont use persistent data then every time you docker down and docker up
# docker will just rebuild a brand new installation and your will lose all previous session data
# our persistent theme folder routing for portfolio theme
# make sure this mapping matches your theme folder name (this example is portfolio)
- ./portfolio:/var/www/html/wp-content/themes/portfolio:delegated
# our persistent plugins and uploads folder
- ./plugins:/var/www/html/wp-content/plugins
- ./uploads:/var/www/html/wp-content/uploads
# our persistent uploads.ini setting (uploads.ini must exist before running this)
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
ports:
- "80:80"
restart: always
networks:
- wordpress
environment:
# docker wp config settings
# these can be the same for every local docker project
# never pass these to the staging or production wp-configs
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
WORDPRESS_TABLE_PREFIX: wp_
WORDPRESS_AUTH_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_SECURE_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_LOGGED_IN_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_NONCE_KEY: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_SECURE_AUTH_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_LOGGED_IN_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
WORDPRESS_NONCE_SALT: 5f6ede1b94d25a2294e29eeba929a8c80a5ac0fb
# extra wp configs
WORDPRESS_CONFIG_EXTRA: |
/* local parameters */
define('WP_CACHE', false);
define('ENVIRONMENT', 'local');
define('WP_DEBUG', true);
/* configure mail server */
define('WORDPRESS_SMTP_AUTH', false);
define('WORDPRESS_SMTP_SECURE', '');
define('WORDPRESS_SMTP_HOST', 'mailhog');
define('WORDPRESS_SMTP_PORT', '1025');
define('WORDPRESS_SMTP_USERNAME', null);
define('WORDPRESS_SMTP_PASSWORD', null);
define('WORDPRESS_SMTP_FROM', 'no-reply@portfolio.com');
define('WORDPRESS_SMTP_FROM_NAME', 'Portfolio');
/* licence key defining examples - fake keys */
define('GF_LICENSE_KEY', '567e5cc582262cea465f5ff01d3060cd');
define('ACP_LICENCE', 'ebfb-4deb-8b1c-a580a44a-12435e03615d');
/* if wp home is not defined */
if(!defined('WP_HOME')) {
/* force our home url override for permalinks and wp get functions */
define('WP_HOME', 'http://localhost');
define('WP_SITEURL', WP_HOME);
}
# here is our mail hog content
# this creates a local mail server for see outgoing email from this wordpress site
# access the mailbox via http://localhost:8025/
mailhog:
image: mailhog/mailhog:latest
ports:
- "8025:8025"
networks:
- wordpress
- Antes de acoplarnos, agregue este código en la parte superior de su
functions.php
. Esto configurará el correo saliente local para ser enviado a correo. Además de algunas funciones útiles de ayuda al desarrollo…
<?php
/**
* @author Kristina Bressler
* @version 1.0
*/
// configure PHPMailer to send through smtp
add_action('phpmailer_init', function($phpmailer) {
$phpmailer->isSMTP();
// host details
$phpmailer->SMTPAuth = WORDPRESS_SMTP_AUTH;
$phpmailer->SMTPSecure = WORDPRESS_SMTP_SECURE;
$phpmailer->SMTPAutoTLS = false;
$phpmailer->Host = WORDPRESS_SMTP_HOST;
$phpmailer->Port = WORDPRESS_SMTP_PORT;
// from details
$phpmailer->From = WORDPRESS_SMTP_FROM;
$phpmailer->FromName = WORDPRESS_SMTP_FROM_NAME;
// login details
$phpmailer->Username = WORDPRESS_SMTP_USERNAME;
$phpmailer->Password = WORDPRESS_SMTP_PASSWORD;
});
// stops wp error by defining valid email address from our wp config
add_filter('wp_mail_from', function() { return WORDPRESS_SMTP_FROM; } );
add_filter('wp_mail_from_name', function () { return WORDPRESS_SMTP_FROM_NAME; } );
// wp mail failed action
add_action('wp_mail_failed', function($wp_error) {
// dump any mail errors on local and staging environments
is('local','staging') ? dd($wp_error) : false;
}, 10, 1);
// d dump print function
function dd(...$args) {
dump(...$args);
exit;
}
// dump print function
function dump(...$args) {
foreach ($args as $dump) {
echo '<pre class="dd">' . print_r($dump, true) . '</pre>';
}
}
// environment
function environment() {
return defined('ENVIRONMENT') ? ENVIRONMENT : 'production';
}
// is environment
function is(...$environments) {
foreach ($environments as $environment) {
if($environment === environment())
return true;
}
}
- Ahora estamos listos para acoplar, su estructura de carpetas debería verse así…

- Para construir este entorno usando la ventana acoplable, debe ejecutar este comando
docker-compose up -d
sobre el project
carpeta que contiene el .yml
expediente.
Puede tener algunos problemas si no ha ejecutado docker-compose down
en el complemento de bloques de construcción .yml
carpeta principal que ya ha ejecutado. Deberá detener cualquier entorno docker en ejecución para que funcione lo anterior. Esto es lo mismo con todos sus proyectos docker en el futuro, no puede docker docker-compose up -d
en el proyecto si ya se está ejecutando otro. Simplemente ejecuta docker-compose down
en el entorno de ejecución para apagarlo.
- Si ha ejecutado con éxito
docker-compose up -d
en nuestro project
carpeta, notará que la estructura de carpetas de su proyecto ahora se ve así…

- Ahora simplemente visite http://localhost para completar el proceso de instalación de WordPress…

- Una vez instalado, deberá activar nuestro tema de cartera…

- Una vez que el tema está activado, puede ver el correo electrónico saliente de este entorno local de WordPress a través de mailhog simplemente visitando http://localhost:8025…

- Si está utilizando git, debe agregar un
.gitignore
archivo a la carpeta de su proyecto. No quieres estar confirmando carpetas db
, plugins
y uploads
a su repositorio. Estos son muy grandes en tamaño de archivo y no en código de proyecto. Encuentre otros medios para hacer una copia de seguridad de estos, como la sincronización de copia de seguridad de Google Drive o algo así…
/db
/plugins
/uploads
/portfolio/dist
/portfolio/node_modules
/portfolio/vendor
- Para obtener el https://github.com/richtabor/bloques-de-construccion complemento instalado, simplemente descargue o clone este repositorio en el
plugins
carpeta en su proyecto local…

- Luego vaya a la sección de complementos en el tablero de WordPress y active el complemento Building Blocks…

¡Y listo!
Para detener y eliminar el entorno, simplemente ejecute docker-compose down
en la carpeta del proyecto.
Ahora puedes con seguridad docker-compose up -d
en otro proyecto.
Algunas notas…
-
Nuestro mapeo persistente en nuestro docker-compose.yml
nos permite acoplar un proyecto con todos los mismos datos de archivo y datos mysql que teníamos la última vez que acoplamos el entorno. Sin estas asignaciones persistentes, Docker reconstruirá una instalación completamente nueva desde el Imagen del centro de la ventana acoplable de WordPress.
-
no sincronizar db
, plugins
y uploads
datos de entornos locales a escenarios/producción. Administrar manualmente plugins
sobre ambientes. uploads
y la base de datos son independientes de cada entorno.
-
Puede volcar cuidadosamente tablas de bases de datos locales específicas como inserciones e importarlas/reemplazarlas en bases de datos de preparación/producción si también lo necesita. Simplemente no recomiendo hacer esto con volcados de bases de datos locales completos.
-
Volcar bases de datos completas de preparación/producción y cargarlas en el entorno de la ventana acoplable local está absolutamente bien, pero no al revés.
-
wp-config.php
en entornos de ensayo/producción, lo ideal es que se administren manualmente y no se sincronicen desde entornos locales. No incluido en los repositorios por si acaso.
Esto no parece estar relacionado con git o github. los
git
no se requiere etiqueta.–Asif Kamran Malick
12 de marzo de 2021 a las 19:16
Pensé que el archivo yml tal vez no estaba completo para un entorno local. Podrían haber dicho simplemente en su guía que editen el archivo .yml a lo que sea que tengamos configurado en nuestro entorno local de wordpress de la ventana acoplable. Su guía fue realmente confusa…
– Cristina Bressler
12 de marzo de 2021 a las 22:37
esperando su respuesta pronto. gracias por tu explicacion tambien
– Cristina Bressler
13 de marzo de 2021 a las 9:22
Lo siento por la respuesta tardía, he publicado una respuesta. Espero eso ayude 🙂
– joshmoto
13 de marzo de 2021 a las 22:38