Warden
Mi entorno de desarrollo local actual para Magento (adiós Valet)
En esta página
Durante años lo corrí todo de forma nativa en macOS y más tarde me pasé a Valet Plus . Era rápido, pero también ataba mi máquina a versiones específicas de PHP, MySQL y del motor de búsqueda, y cada proyecto que necesitaba un stack un poco distinto significaba pelearse con el host. Hoy en día uso Warden y no miro atrás.
Warden es una CLI que orquesta Docker por ti. En lugar de instalar servicios en tu portátil, ejecuta una vez un conjunto de servicios compartidos (un reverse proxy Traefik, un resolvedor de DNS, Portainer y una autoridad certificadora SSL), y luego cada proyecto obtiene sus propios contenedores aislados: nginx, php-fpm, base de datos, Redis, OpenSearch/Elasticsearch, RabbitMQ, Varnish… lo que el stack de Magento necesite. Se parece a producción mucho más de lo que un setup nativo jamás lo hizo.
Instalar Warden y los servicios compartidos
brew install wardenenv/warden/warden
warden svc upEl primer warden svc up arranca los servicios compartidos e instala una autoridad certificadora local (te pedirá la
contraseña una vez). A partir de ahí, cada proyecto que levantes obtiene automáticamente URLs https://*.test de
confianza.
Levantar un proyecto
Desde la raíz de tu proyecto Magento, inicializa el entorno y levántalo:
warden env-init my-project magento2
warden env upenv-init escribe un archivo .env con WARDEN_ENV_NAME y WARDEN_ENV_TYPE=magento2. Ese archivo es la única fuente de
verdad del stack, así que es seguro commitearlo y compartirlo con el equipo.
Después, emite un certificado SSL para el dominio del proyecto y listo:
warden sign-certificate my-project.testTraefik ahora enruta https://app.my-project.test hacia el contenedor nginx de tu proyecto.
Trabajando dentro de los contenedores
Esta es la parte que uso todo el día. Entra al contenedor php-fpm:
warden shellO ejecuta comandos puntuales desde el host sin entrar al contenedor:
warden env exec php-fpm bin/magento setup:upgrade
warden env exec php-fpm composer install.warden/warden-env.yml y los servicios adicionales en un docker-compose.warden.yml en la raíz del proyecto. Nunca edites directamente los archivos compose generados por Warden, se regeneran.Por qué me cambié
- Se parece a producción. Mismos servicios, mismas versiones, por proyecto.
- Aislamiento total. ¿Dos proyectos en versiones distintas de PHP? Sin problema, nunca se tocan entre sí ni con el host.
- Desechable. ¿Rompiste algo?
warden env down -vy empiezas limpio, sin ensuciar mi portátil. - Compartible. El
.envy un par de archivos de override describen todo el stack, así que dar de alta a un compañero son minutos, no horas.
Valet Plus me sirvió bien, pero para el trabajo con Magento, Warden encaja hoy mucho mejor.
Espero que esto ayude.
Si tienes alguna pregunta o un setup distinto que te encante, siéntete libre de compartir en los comentarios a continuación.