Sage Sail
Ambiente local com Docker para projetos Roots Bedrock e Sage. Adapta o Laravel Sail ao WordPress: WP-CLI e Acorn no lugar do Artisan, nginx e PHP-FPM.
- Papel
- Autor
- Onde
- Projeto pessoal, open source (MIT)
- Período
- 11/2025 – atual
- Stack
- PHP · Docker · nginx · PHP-FPM · WP-CLI · Acorn
Desafio
O Laravel Sail resolve o ambiente Docker de um projeto Laravel. Eu queria o mesmo para Roots Bedrock e Sage, mas a pilha muda: no lugar do Artisan entram o WP-CLI e o Acorn, o site sai da pasta web/ e o .env usa os nomes de variável do Bedrock.
- Funciona no macOS, no Windows (WSL2) e no Linux.
- Fora o Docker, a máquina só precisa de PHP 8.3+ para rodar o instalador.
- Só atende Bedrock: fora de um projeto Bedrock, o install se recusa a rodar.
Abordagem
Fiz um fork do Laravel Sail e reconstruí o pacote para o WordPress. A imagem serve o site com nginx e PHP-FPM sob o supervisord e já vem com WP-CLI, Composer, Node, npm, pnpm, yarn e bun.
- O PHP-FPM roda com o UID da sua máquina, então o que o container grava continua editável fora dele.
- Com o Mailpit, um mu-plugin leva os e-mails do WordPress para o catcher, e só age dentro do container.
- 13 serviços opcionais, de MySQL e Redis a Meilisearch e MinIO.
- sage-sail publish copia os arquivos Docker para o projeto, para quem quiser assumir a configuração.
Resultado
Um comando leva o projeto do checkout ao site rodando. Ele escreve o compose.yaml, ajusta o .env, gera os salts que faltam, sobe os containers, instala o WordPress e um tema Sage com os assets compilados. No fim, mostra a URL, o login de admin e o tema.
- Rodar o install de novo é seguro: WordPress já instalado e tema existente ficam como estão.
- O CI instala Bedrock, WordPress e Sage do zero em PHP 8.3, 8.4 e 8.5.
- Corrigi aqui o healthcheck do RustFS e mandei a mesma correção para o Laravel Sail: o PR #828, aceito.
- Publicado no Packagist, licença MIT.
composer require jeffersonrucu/sage-sail --dev && ./vendor/bin/sage-sail install