Initial commit
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user