Ambiente Docker para desenvolvimento de um monolito Laravel com PostgreSQL, Livewire e assets via Node 22/Vite.
docker/ # Imagem local da aplicacao
docs/ # Documentacao funcional e tecnica do sistema
docker-compose.yml # Servicos app + worker + db
src/ # Aplicacao Laravel
A documentacao do sistema fica separada por assunto em docs/:
docs/visao-geral.md: resumo funcional e tecnico do monolito.docs/rotas-web.md: telas, rotas e middlewares.docs/fluxos.md: fluxos principais do sistema.docs/regras-negocio.md: regras aplicadas pelo dominio.docs/banco-dados.md: entidades, campos e relacionamentos.docs/pendencias-de-implementacao.md: status dos casos de uso e pendencias.docs/alteracoes.md: historico de mudancas relevantes.
- Aplicacao Laravel: http://localhost:8080
- Vite dev server: http://localhost:5173
- PostgreSQL:
localhost:5432 - Worker de filas: servico
workerdo Docker Compose - Banco:
vitaflow - Usuario:
vitaflow - Senha:
vitaflow
As variaveis usadas no projeto ficam no .env da raiz, separadas por comentarios entre Docker e Laravel. Use o .env.example como referencia.
docker compose up -d --buildO container da aplicacao ja inicia o Apache automaticamente e ajusta as permissoes de escrita do Laravel em storage/ e bootstrap/cache/. Isso evita erro de permissao ao usar o projeto em outra maquina.
Para subir o ambiente com o Vite dev server junto, altere no .env:
RUN_VITE_DEV=trueAo iniciar, o container instala automaticamente as dependencias do Composer, executa as migrations e, quando o Vite estiver habilitado, instala as dependencias do npm. As instalacoes so sao repetidas quando os arquivos de lock mudam. As pastas vendor e node_modules ficam em volumes Docker separados para manter compatibilidade entre Windows e Linux.
Para acompanhar as etapas de inicializacao no terminal:
docker compose logs -f appCom RUN_VITE_DEV=false, o Vite nao inicia automaticamente. Nesse caso, gere os assets com docker compose exec app npm run build ou rode o dev server manualmente com docker compose exec app npm run dev -- --host 0.0.0.0.
Esta etapa so e necessaria se a pasta src/ estiver vazia e o projeto precisar ser recriado do zero:
docker compose run --rm app composer create-project laravel/laravel .
docker compose run --rm app composer require livewire/livewireDepois de criar a base, confira no .env da raiz se o Laravel esta usando PostgreSQL:
DB_CONNECTION=pgsql
DB_HOST=db
DB_PORT=5432
DB_DATABASE=vitaflow
DB_USERNAME=vitaflow
DB_PASSWORD=vitaflowDepois:
docker compose exec app php artisan migratePara preencher o sistema com um volume alto de dados para apresentacao:
docker compose exec app php artisan db:seed --class=DemoSeederO comando pode ser executado novamente sem duplicar os registros demonstrativos. Ele cria:
- 150 usuarios doadores com carteirinhas;
- 30 locais de coleta;
- 240 registros de estoque, cobrindo todos os tipos sanguineos em cada local;
- 60 campanhas em diferentes periodos e status;
- mais de 1.600 agendamentos e cerca de 200 doacoes.
Credenciais para demonstracao:
Administrador
E-mail: admin@vitaflow.local
Senha: Admin@123
Doador
E-mail: doador001@vitaflow.local
Senha: Doador@123Com o Laravel ja criado em src/, rode:
docker compose up -d --build
docker compose exec app php artisan migrateUse comandos do Laravel e Composer dentro do container:
docker compose exec app php artisan ...
docker compose exec app composer ...Para parar:
docker compose down