# 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.