69 lines
2.7 KiB
Markdown
69 lines
2.7 KiB
Markdown
# Runbook de desenvolvimento e operação
|
|
|
|
## Desenvolvimento local
|
|
|
|
1. Copiar `.env.example` para `.env`.
|
|
2. Executar `docker compose build`.
|
|
3. Gerar a chave com `docker compose run --rm app php artisan key:generate`.
|
|
4. Iniciar com `docker compose up -d`.
|
|
5. Preparar dados com `docker compose exec app php artisan migrate --seed`.
|
|
6. Abrir o portal em `http://localhost:8000` e emails em `http://localhost:8025`.
|
|
|
|
## Diagnóstico
|
|
|
|
```bash
|
|
docker compose ps
|
|
docker compose logs --tail=100 app
|
|
docker compose logs --tail=100 queue
|
|
docker compose exec app php artisan about
|
|
docker compose exec app php artisan migrate:status
|
|
docker compose exec postgres pg_isready -U reserva -d reserva
|
|
docker compose exec redis redis-cli ping
|
|
```
|
|
|
|
### Página em branco no desenvolvimento
|
|
|
|
Se o HTML responder mas a interface React não aparecer, confirmar que `public/hot` contém `http://localhost:5173` e não `http://0.0.0.0:5173`. Depois validar os módulos:
|
|
|
|
```bash
|
|
curl -I -H 'Origin: http://localhost:8000' http://localhost:5173/@vite/client
|
|
curl -I -H 'Origin: http://localhost:8000' http://localhost:5173/resources/js/app.tsx
|
|
```
|
|
|
|
Ambos devem responder com estado 200 e `Access-Control-Allow-Origin: http://localhost:8000`. Reiniciar o serviço com `docker compose restart node` se o ficheiro `public/hot` estiver desatualizado.
|
|
|
|
Confirmar também que o HTML inicial já contém conteúdo SSR:
|
|
|
|
```bash
|
|
curl -s http://localhost:8000/login | grep 'data-server-rendered="true"'
|
|
```
|
|
|
|
Se o endpoint Vite devolver um erro SSR, procurar primeiro componentes globais montados em `withApp` que chamem hooks Inertia como `usePage()`. Os elementos irmãos do argumento `app` não pertencem ao respetivo contexto; devem receber as propriedades através do segundo argumento de `withApp`.
|
|
|
|
## Atualização de código
|
|
|
|
```bash
|
|
docker compose exec app composer install
|
|
docker compose exec node npm install
|
|
docker compose exec app php artisan migrate --force
|
|
docker compose exec app php artisan optimize:clear
|
|
docker compose restart queue scheduler
|
|
```
|
|
|
|
## Produção
|
|
|
|
Antes de disponibilizar:
|
|
|
|
- definir `APP_ENV=production`, `APP_DEBUG=false` e HTTPS;
|
|
- substituir todas as palavras-passe do exemplo;
|
|
- montar segredos fora do repositório;
|
|
- remover exposição pública das portas PostgreSQL, Vite e Mailpit;
|
|
- configurar volumes persistentes e backups cifrados;
|
|
- executar `php artisan optimize` e frontend compilado;
|
|
- definir health checks, alertas e rotação de logs;
|
|
- testar recuperação de backup e falha Snipe-IT.
|
|
|
|
## Backups
|
|
|
|
Salvaguardar diariamente PostgreSQL e uploads. Manter retenção semanal/mensal e uma cópia fora do servidor. Segredos são salvaguardados através de procedimento separado. Executar um teste de restauro periódico e registar o resultado.
|