109 lines
3.1 KiB
Markdown
109 lines
3.1 KiB
Markdown
# Tasks: Docker Setup
|
||
|
||
**Branch**: `002-docker-setup`
|
||
**Plan**: `.specify/features/002-docker-setup/plan.md`
|
||
**Created**: 2026-04-13
|
||
|
||
---
|
||
|
||
## Phase 1 — Backend Dockerfile
|
||
|
||
### T001 — Criar backend/Dockerfile
|
||
- **Complexity**: S
|
||
- **Dependencies**: nenhuma
|
||
- **Spec ref**: FR1, FR3
|
||
- **Files**: `backend/Dockerfile`, `backend/entrypoint.sh`
|
||
- **Done when**: `docker build -t imob-backend ./backend` conclui sem erro
|
||
|
||
### T002 — Criar entrypoint.sh com migrations + seed + server
|
||
- **Complexity**: S
|
||
- **Dependencies**: T001
|
||
- **Spec ref**: FR3
|
||
- **Files**: `backend/entrypoint.sh`
|
||
- **Done when**: Script executa `flask db upgrade`, seeder, e sobe Flask na porta 5000
|
||
|
||
---
|
||
|
||
## Phase 2 — Frontend Dockerfile
|
||
|
||
### T003 — Criar frontend/Dockerfile
|
||
- **Complexity**: S
|
||
- **Dependencies**: nenhuma [P] paralelo com T001
|
||
- **Spec ref**: FR1, FR4
|
||
- **Files**: `frontend/Dockerfile`
|
||
- **Done when**: `docker build -t imob-frontend ./frontend` conclui sem erro
|
||
|
||
### T004 — Atualizar vite.config.ts para proxy Docker
|
||
- **Complexity**: S
|
||
- **Dependencies**: T003
|
||
- **Spec ref**: FR1
|
||
- **Files**: `frontend/vite.config.ts`
|
||
- **Done when**: Proxy aponta para `http://backend:5000` (nome do serviço Docker); local dev ainda funciona via variável de ambiente
|
||
|
||
---
|
||
|
||
## Phase 3 — Orquestração
|
||
|
||
### T005 — Criar docker-compose.yml
|
||
- **Complexity**: M
|
||
- **Dependencies**: T001, T003
|
||
- **Spec ref**: FR1, FR2, FR4, FR5
|
||
- **Files**: `docker-compose.yml`
|
||
- **Done when**: `docker-compose config` valida; 3 serviços definidos com healthcheck no db
|
||
|
||
### T006 — Criar .env.example na raiz
|
||
- **Complexity**: S
|
||
- **Dependencies**: T005
|
||
- **Spec ref**: FR5, NFR4
|
||
- **Files**: `.env.example` (raiz)
|
||
- **Done when**: Todas as variáveis usadas no compose estão documentadas com valores de exemplo
|
||
|
||
### T007 — Verificar .gitignore cobre .env
|
||
- **Complexity**: S
|
||
- **Dependencies**: T006
|
||
- **Spec ref**: NFR3, NFR4
|
||
- **Files**: `.gitignore`
|
||
- **Done when**: `.env` está no .gitignore e não aparece em `git status`
|
||
|
||
---
|
||
|
||
## Phase 4 — Script de conveniência
|
||
|
||
### T008 — Criar start.ps1 na raiz
|
||
- **Complexity**: S
|
||
- **Dependencies**: T005
|
||
- **Spec ref**: FR6
|
||
- **Files**: `start.ps1`
|
||
- **Done when**: `.\start.ps1` valida Docker e executa compose; exibe erro claro se Docker não estiver instalado
|
||
|
||
---
|
||
|
||
## Validação
|
||
|
||
### T009 — Testar docker-compose up --build end-to-end
|
||
- **Complexity**: M
|
||
- **Dependencies**: T005, T008
|
||
- **Spec ref**: Todos os Acceptance Scenarios
|
||
- **Done when**:
|
||
- `http://localhost:5173` carrega homepage
|
||
- `http://localhost:5000/api/v1/homepage-config` retorna 200
|
||
- `http://localhost:5000/api/v1/properties?featured=true` retorna array
|
||
- Editar um `.tsx` reflete no browser via hot-reload
|
||
|
||
---
|
||
|
||
## Resumo
|
||
|
||
| Task | Fase | Complexidade | Paralelo? |
|
||
|------|------|-------------|-----------|
|
||
| T001 | Backend Dockerfile | S | - |
|
||
| T002 | entrypoint.sh | S | - |
|
||
| T003 | Frontend Dockerfile | S | ✅ com T001 |
|
||
| T004 | vite proxy Docker | S | - |
|
||
| T005 | docker-compose.yml | M | - |
|
||
| T006 | .env.example raiz | S | - |
|
||
| T007 | .gitignore check | S | - |
|
||
| T008 | start.ps1 | S | - |
|
||
| T009 | Validação E2E | M | - |
|
||
|
||
**MVP**: T001–T008 = ambiente Docker funcional.
|