Initial commit

This commit is contained in:
tiago
2026-10-01 11:00:47 -03:00
commit 9d2ab731ee
149 changed files with 11351 additions and 0 deletions
+64
View File
@@ -0,0 +1,64 @@
# Etapa 09 — Docker Compose e deploy
## Objetivo
Consolidar os três serviços (postgres, backend, frontend) em um único `docker-compose.yml` capaz de subir o ambiente completo com um comando.
## Tarefas
1. Criar `Dockerfile` do backend (multi-stage build: build com Maven, runtime com JRE 21 slim), incluindo a instalação das dependências do Playwright (Chromium) na imagem final
2. Criar `Dockerfile` do frontend (multi-stage: build com Node, servir estático via Nginx)
3. Consolidar o `docker-compose.yml` final:
```yaml
services:
postgres:
image: postgres:16
environment:
POSTGRES_DB: leadscraper
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
interval: 5s
timeout: 5s
retries: 5
backend:
build: ./backend
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/leadscraper
SPRING_DATASOURCE_USERNAME: ${DB_USER}
SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD}
JWT_SECRET: ${JWT_SECRET}
depends_on:
postgres:
condition: service_healthy
ports:
- "8082:8082"
frontend:
build: ./frontend
environment:
VITE_API_URL: ${API_URL}
depends_on:
- backend
ports:
- "8081:80"
volumes:
postgres_data:
```
4. Criar `.env.example` na raiz com todas as variáveis referenciadas (`DB_USER`, `DB_PASSWORD`, `JWT_SECRET`, `API_URL`)
5. Validar que `docker compose up --build` sobe os três serviços do zero, aplica as migrations automaticamente (Flyway roda no startup do backend) e o frontend consegue falar com o backend
6. Documentar no `LEIA-ME.md` o comando de subida completa e como configurar o `.env` para produção (trocar senhas padrão, ajustar `VITE_API_URL` para o domínio real)
## Critérios de aceite
- [ ] `docker compose up --build` sobe o ambiente completo em uma máquina limpa
- [ ] Migrations aplicam automaticamente sem passo manual
- [ ] Frontend acessível na porta configurada e conseguindo autenticar/consultar dados via backend
- [ ] Variáveis sensíveis (senha do banco, JWT secret) vêm de `.env`, nunca hardcoded nos Dockerfiles ou no compose
- [ ] `LEIA-ME.md` atualizado com instruções de subida