Matriz de ambientes (KOLOS)
Referência rápida: o que corre em cada contexto e onde estão as lacunas.
Desenvolvimento local
| Modo |
HTTP |
DB |
Fila |
Reverb |
Mail |
Sail (compose.yaml) |
nginx no contentor laravel.test |
Postgres 18 (serviço pgsql) |
queue:work via Supervisor |
reverb:start via Supervisor |
Mailpit |
composer dev (sem Sail) |
php artisan serve |
.env local |
incluído no script |
incluído no script |
.env |
- Meilisearch existe no
compose.yaml como serviço opcional (profile: meilisearch). O projeto não usa Scout/Meilisearch no PHP; não arranca por defeito. Para ativar: docker compose --profile meilisearch up -d.
.env.example: valores por omissão são “Laravel mínimo” (sqlite); há bloco comentado Sail com pgsql/redis/mailpit.
Testes / CI
| Aspeto |
Detalhe |
| Pest / PHPUnit |
phpunit.xml: SQLite in-memory, QUEUE_CONNECTION=sync, Telescope/Pulse desligados. |
Cobertura (<source>) |
Inclui app/ e src/. |
| GitHub Actions |
Node 24 (alinhado com Dockerfile), PHP 8.5, Pint, PHPStan, npm ci + npm run build, php artisan test. |
| Gitleaks |
Job security com continue-on-error: true — falhas não bloqueiam build_deploy (útil sem GITLEAKS_LICENSE). Configura o secret quando quiseres enforcement estrito. |
| Deploy |
Job build_deploy na main ainda é placeholder (artefacto public/build apenas). |
Produção — imagem única (Dockerfile)
| Processo |
Incluído? |
| Nginx + PHP-FPM |
Sim (Supervisor docker/prod/supervisord.conf) |
queue:work |
Não (evita duplicar workers se usares Compose com serviço queue) |
schedule:work |
Não |
| Reverb |
Não |
Deploy só com um contentor (ex.: Dokploy “Dockerfile” sem Compose): não há consumo de fila nem WebSockets até correres processos extra ou usares o Compose de compose.dokploy.yaml.
Produção — Compose (compose.dokploy.yaml)
| Serviço |
Função |
app |
HTTP (porta interna 80) |
queue |
php artisan queue:work |
scheduler |
php artisan schedule:work |
reverb |
php artisan reverb:start |
pgsql / redis |
Dados e cache/sessão/fila |
Variáveis críticas: APP_KEY, APP_URL (https), DB_*, Redis, Reverb público (VITE_* / proxy TLS).
Ferramentas no composer.json sem processo dedicado na imagem
- Horizon: dependência presente; a stack Dokploy documentada usa
queue:work. Para Horizon, seria necessário comando/imagem próprios e Redis.
- Telescope / Pulse: desligar em público via
.env em produção.
- Spatie Backup: requer scheduler a correr (
scheduler no Compose).
Documentação relacionada