Usar Devilbox para el desarrollo local de WordPress en Docker


Durante algún tiempo quiero mover todos mis sitios de desarrollo locales en Docker en lugar de correr nativo de mi automóvil o correr en una VM (escribí sobre Vagant vs Docker). Quería hacer esto por muchas razones:
No quiero que me obligue a instalar adicciones de software directamente en mi automóvil a los sitios de desarrollo de alojamiento (Alavel Valet).
No quiero ejecutar una VM pesada que consuma muchos recursos (Ala VVV)
No quiero que sea lento (ala mamp)
Prefiero usar el CLI que estar atado en una GUI (local por volante)
Docker es el “nuevo brillante”, ¿no??
Después de probar algunas de las soluciones anteriores, pude inspirarme en el último artículo de Jeff sobre entornos de desarrollo locales (gracias Jeff) y descubrí un nuevo proyecto que parecía marcar todas las casillas: Devilbox.
Según Devilbox.org, Devilbox es “un reemplazo de la lámpara y una pila moderna y extremadamente personalizable basada exclusivamente en Docker y Docker-Compose”. Viene con todo el software que necesitaba para alojar mis sitios locales de WordPress, se ejecuta en Docker (FAST) y se basa completamente en CLI (se recomienda la familiaridad con Docker-Compose). También tiene una gran función “virtualhosts” en la que cualquier subdirector de un director elegido. Se convierte automáticamente en sitios nuevos sin tener que recargar nada (un poco como el parque de Valert). ¡Suena bien! En este artículo, lo guiaré configurando Devilbox en su computadora y hablaré con usted sobre algunas de las rarezas que enfrenté cuando usé Devilbox y cómo las evité.
Instalando Devilbox antes de comenzar, permítanme decir que en este artículo configure Devilbox en macOS usando Docker para Mac. Sin embargo, el mismo proceso se puede realizar en Windows (consulte los documentos de Devilbox para obtener más información). Primero debemos instalar Devilbox. Esto es en realidad bastante simple. Clonamos el depósito y copiamos el ejemplo. Básicamente extrae todas las imágenes de Docker necesarias: $ ./update-docker.sh A continuación, tenemos que configurar Devilbox. Los documentos de Devilbox entran en detalles sobre todas las diferentes configuraciones que podemos cambiar, pero la mayoría de la configuración predeterminada será buena en nuestro caso. Algunas configuraciones es posible que desee cambiar en su archivo .nv: TLD_SUFFIX; de forma predeterminada, Devilbox usa .cloc como sufijo en el dominio. Tenga en cuenta que si usa Chrome, no se recomienda un .dev TLD.
Cambio en la zona horaria en la zona horaria local.
Host_patch_httpd_datadir-ubicación de la carpeta del sitio para “virtualHosts”.
Tenga en cuenta que puede elegir qué imágenes de Docker se utilizan para sus servicios decorando las líneas correctas en su archivo .env. Por defecto, Devilbox usa PHP-FPM-7.1, Ning-Stable y MariadB-10.1, lo que será bueno para nuestros propósitos. Finalmente estamos listos para ejecutar Devilbox. Si le complace ejecutar todos los servicios que están configurados con Devilbox (por ejemplo, Bind, PHP, Apache/Nginx, MySQL, PostGreql, Redis, MemCached, MongoDB), simplemente puede ejecutar:
$ Docker -compuesto up -d Sin embargo, en nuestro caso no necesitamos servicios como PostgressQL, MongoDB, etc., por lo que solo podemos ejecutar lo que necesitamos para especificar: $ Docker -compose up -d httpd php mysql great redis ahora nosotros nosotros ¡Debería estar en funcionamiento! Puede ejecutar Docker-Compose PS para verificar todo nuevamente si funciona. Si visita http: // localhost, también debe ver una hermosa página de condición que muestre la condición de todos sus servicios que se ejecutan y las configuraciones relacionadas. Agregar sitios del sitio debido a nuevos sitios es realmente muy simple.
Cree una nueva carpeta de proyecto para VirtualHost (en host_path_httpd_datadir)

Dentro de la carpeta del proyecto, cree una subcarpeta llamada htdocs para docutroot
Cree un registro DNS que indique 127.0.0.1 en /etc /hosts
Supongamos que usa la ubicación predeterminada de Devilbox para la carpeta de su sitio (~/Devilbox/Date/www). En este caso, debe crear el siguiente director: $ CD ~/Devilbox/Date/www $ mkdir -p wordpress/htdocs y luego agregue la siguiente línea en/etc/hosts: 127.0.0.1 wordpress.loc y perse! Devilbox ahora te da el nuevo sitio. Puede consultar la condición de su sitio mirando la página de hosts virtual en el tablero Devilbox. Nota: Si hay problemas con su sitio, el tablero le dirá cuáles son.
Una cosa a tener en cuenta aquí es que si su sitio es un repose Git, por ejemplo, y no tiene una carpeta HTDOCS de nivel superior, puede vincular la carpeta HTDOCS al directorio apropiado (consulte los documentos para obtener más información). Ejecutando los scripts ahora dice que desea ejecutar un script dentro del contenedor PHP (por ejemplo, ejecutar comandos WP-CLI, instalar compositor o un script personalizado, etc.). ¿Cómo haces esto en Devilbox? Bueno, puede ejecutar un comando Docker largo y complicado para adjuntar una fiesta de shell al contenedor en ejecución. O puede hacer esto en Devilbox.devilbox viene con un script shell.sh en cuestión, que es prácticamente un atajo al comando correcto Docker-Compose Exec para que no sea necesario recordarlo. Simplemente ejecute el script para conectarse al contenedor PHP que se ejecuta: $ ./shell.sh en la mano. Recuerde que cualquier cambio que realice a un contenedor se perderá cuando el contenedor se reinicie o se detenga. Por lo tanto, aunque puede ser útil solucionar problemas y ejecutar controles únicos en el contenedor, debe intentar mantener los cambios de archivo al mínimo. Director de enlaces simbólicos Un problema que encontré mientras desarrollaba sitios en Devilbox es lo que sucede cuando desea conectar las carpetas en la instalación de WordPress (por ejemplo, si desarrolla un complemento personalizado alojado en otra parte). Normalmente, vinculará al director de complementos personalizado al director de WP-Content/Plugins y estará configurado. Pero esto no funcionará con Devilbox, porque Docker actualmente no acepta los enlaces simbólicos de archivos fuera del contexto de construcción.
Para resolver este problema, debe cambiar el archivo Docker-compose.yml y agregar el director de complementos personalizado a PHP y HTTPS: Php: … Volúmenes: …-/Path/TO/Custom-Plugin:/Shared/ Httpd/wordpress/htdocs/wp-content/plugins/custom-plug Esta no es una solución ideal, pero resuelve el problema. Comunicación con hosts externos Otro problema que encontré durante el desarrollo con sitios en Devilbox es lo que sucede cuando desea conectarse a otro sitio alojado en otro lugar de su automóvil (por ejemplo, en otro Docker de red o en una VM, etc.). Por ejemplo, en mi caso, tenía la aplicación Merchate alojada en una red Docker separada, pero necesitaba el complemento Mergot en mi sitio web de Devilbox para conectarse a la aplicación. En /etc /hosts en mi auto host, tuve una entrada para: 127.0.0.1 App.mergebot.loc Pero si me conecto al contenedor PHP e intento hacer ping a la aplicación. Desde la red Devilbox. Lo que realmente necesitaba era encontrar la dirección IP de mi auto host (ejecutando ipconfig getifaddr en0) y agregar una entrada a /etc /hosts desde el contenedor para que funcione. Sin embargo, como se mencionó anteriormente, editar archivos dentro de los contenedores es una mala idea, porque se perderán cualquier cambio si el contenedor se restaura o reconstruye. Afortunadamente, Docker-Compose tiene un mecanismo incorporado para administrar hosts externos. Simplemente podemos agregar extra_hosts a los servicios PHP y HTTPS en el archivo Docker-Compose.yml:


Php: … extra_hosts: – “app.mergebot.loc: 192.168.0.23” Esto funcionó bien hasta que me di cuenta de que la dirección IP de mi auto host se puede cambiar ocasionalmente y la actualización manual de esta información cada vez que ha habido un cambio pesado. Así que decidí escribir un pequeño script para almacenar la IP del host en una variable personalizada en mi archivo .env, luego matar y reiniciar los contenedores según sea necesario. En la parte inferior de mi archivo. Agregué: docker_mac_localhost = 192.168.86.24 Luego actualicé Docker -compose.yml para usar la nueva variable ambiental: php: … extra_hosts: – “app.mergerbot: $ {docker_localhost}” Luego creé A script de shell llamado reset-host-ip.sh en el Devilbox/Date: #!/bin/shection_root = “$ (cd” (dirnames “$ {bash_source [0]}”)/.. “&& pwd)” cd $ Project_Root host_ip = `ipconfig gitifaddr en0` echo” Actualización del host IP a $ host_ip … “sed” S/docker_mac_localhost =. mv .env1 .env docker-compose kill httpd php && docker-compose rm -f httpd php && docker -Compose up -d httpd php echo “terminado”

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

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