Warden

Mi entorno de desarrollo local actual para Magento (adiós Valet)


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.

Warden funciona en macOS y Linux. En macOS todo se instala a través de Homebrew .

Instalar Warden y los servicios compartidos

bash
brew install wardenenv/warden/warden
warden svc up

El 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:

bash
warden env-init my-project magento2
warden env up

env-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:

bash
warden sign-certificate my-project.test

Traefik 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:

bash
warden shell

O ejecuta comandos puntuales desde el host sin entrar al contenedor:

bash
warden env exec php-fpm bin/magento setup:upgrade
warden env exec php-fpm composer install
Tip: Mantén los ajustes a nivel de servicio en .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 -v y empiezas limpio, sin ensuciar mi portátil.
  • Compartible. El .env y 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.