📚 API Livros Vai Na Web + 🐳 Docker
API completa para gestão de acervo literário com conteinerização Docker
🚀 Começando
Pré-requisitos
🔧 Sem Docker
- Python 3.11+
- SQLite3
- Git (opcional)
🐋 Com Docker (Recomendado)
- Docker Desktop
- Docker Compose (vem com Docker Desktop)
⚙️ Instalação
Método Docker (Recomendado)
git clone https://github.com/samuelrms/desafio-final-vnw-full-stack.git
cd desafio-final-vnw-full-stack-back-end
cp .env.example .env
docker-compose up --build
Acesse a API: http://localhost:5000
🗂 Estrutura do Projeto
desafio-final-vnw-full-stack/
├── backend/
│ ├── app/
│ │ ├── config/ # Configurações do sistema
│ │ │ ├── __init__.py
│ │ │ └── database.py # Conexão com banco de dados
│ │ ├── db/
│ │ │ └── schema.sql # Script SQL de criação de tabelas
│ │ └── routes/ # Endpoints da API
│ │ ├── __init__.py
│ │ ├── get_routes.py # Rotas de consulta
│ │ └── post_routes.py# Rotas de criação
│ ├── docker-compose.yml # Orquestração de containers
│ ├── Dockerfile # Build da imagem Docker
│ ├── main.py # Ponto de entrada da aplicação
│ └── requirements.txt # Dependências Python
└── frontend/ # [OPCIONAL] Interface web
├── public/
├── src/
└── package.json
🔧 Configuração
Variáveis de Ambiente (.env)
FLASK_DEBUG=1 # Modo desenvolvimento (1=ativo)
DATABASE_URL=sqlite:///database.db # URL de conexão SQLite
🧪 Testando a API
# Cadastrar novo livro
curl -X POST -H "Content-Type: application/json" -d '{
"titulo": "Arquitetura Limpa",
"categoria": "TI",
"autor": "Robert C. Martin",
"imagem_url": "http://exemplo.com/clean-arch.jpg"
}' http://localhost:5000/doar
# Listar livros cadastrados
curl http://localhost:5000/livros
# Buscar por categoria
curl http://localhost:5000/livros?categoria=TI
🐳 Comandos Docker Essenciais
| Comando | Descrição |
|---|---|
docker-compose up -d | Inicia containers em background |
docker-compose logs -f | Monitora logs em tempo real |
docker-compose exec web bash | Acessa o container |
docker-compose down -v | Remove containers e volumes |
🚨 Solução de Problemas
Problema: Porta 5000 em uso
✅ Solução:
sudo lsof -i :5000 # Listar processos
kill <PID> # Substitua pelo ID do processo
Problema: Erro ao criar container
✅ Solução:
docker system prune -a --volumes
docker-compose up --build
✨ Vantagens da Arquitetura
- Modularidade: Separação clara entre componentes
- Segurança: Isolamento de ambientes com Docker
- Escalabilidade: Fácil adição de novos endpoints
- Portabilidade: Configuração replicável em qualquer sistema
🤝 Fluxo de Desenvolvimento
- Clone o repositório
- Crie uma nova branch:
git checkout -b feature/nova-funcionalidade
- Desenvolva usando containers:
docker-compose exec web bash
# Dentro do container:
flask run --host=0.0.0.0 --reload
- Envie suas alterações:
git add .
git commit -m "Descrição das mudanças"
git push origin feature/nova-funcionalidade
Desenvolvido com ❤️ por Samuel Ramos
📧 Contato Profissional
💼 Perfil LinkedIn
🐙 Repositório GitHub
🌐 Site Vai Na Web