Este projeto é uma API desenvolvida com FastAPI para gerenciar alunos, cursos e matrículas em uma instituição de ensino. A aplicação foi containerizada com Docker para simular ambientes reais, eliminando o clássico problema do "na minha máquina funciona".
- Python 3.10 ou superior instalado
- Git
- Docker
- Extensão Gemini Code Assist (opcional para apoio com IA)
-
Faça o download do repositório: Clique aqui para realizar o download
-
Crie um ambiente virtual:
python3 -m venv ./venv
No meu windows, usei python -m venv ./venv
-
Ative o ambiente virtual:
- No Linux/Mac:
source venv/bin/activate - No Windows, abra um terminal no modo administrador e execute o comando:
Set-ExecutionPolicy RemoteSigned
venv\Scripts\activate
- No Linux/Mac:
-
Instale as dependências:
pip install -r requirements.txt
-
Execute a aplicação:
uvicorn app:app --reload
-
Acesse a documentação interativa:
Abra o navegador e acesse:
http://127.0.0.1:8000/docsAqui você pode testar todos os endpoints da API de forma interativa.
📦 imersao-devops/
├── app.py # Arquivo principal da aplicação FastAPI
├── models.py # Modelos do banco de dados (SQLAlchemy)
├── schemas.py # Schemas de validação (Pydantic)
├── database.py # Configuração da conexão com SQLite
├── routers/ # Rotas organizadas por recurso (alunos,cursos, matrículas)
├── requirements.txt # Lista de dependências do projeto
├── escola.db # Banco de dados SQLite criado automaticamente
├── assets/ # Arquivos estáticos do projeto (imagens, diagramas, etc.)
│ ├── screenshots/ # Prints da API, interface Swagger, etc.
│ └── diagrams/ # Diagramas de arquitetura e estrutura
└── README.md # Documentação do projeto
- O banco de dados SQLite será criado automaticamente como
escola.dbna primeira execução. - Para reiniciar o banco, basta apagar o arquivo
escola.db(isso apagará todos os dados).
┌────────────────────┐
│ Usuário │
│ (Navegador/Client) │
└────────┬───────────┘
│
▼
┌────────────────────────┐
│ FastAPI (app.py) │
│ ──────────────────── │
│ Rotas (routers/) │
│ Schemas (schemas.py) │
│ Models (models.py) │
│ DB (database.py) │
└───────────┬────────────┘
│
▼
┌────────────────────────────┐
│ Banco de Dados SQLite │
│ (escola.db) │
└────────────────────────────┘
┌──────────────────────────────────────┐
│ Docker │
└──────────────────────────────────────┘
│ │
┌───────────────┘ └──────────────┐
▼ ▼
┌──────────────────────────────┐ ┌──────────────────────────────┐ │ Container: FastAPI │ │ Container: SQLite (local) │ │ (app.py, routers, models...) │ │ (ou possível Postgres) │ └────────────┬─────────────────┘ └────────────┬─────────────────┘ │ │ ▼ ▼ Acesso via navegador Volume persistente (opcional)
-
Criar Dockerfile com instruções de build
-
Criar .dockerignore para ignorar arquivos desnecessários
-
Construir a imagem Docker:
docker build -t api .- Executar a imagem:
docker run -d -p 8000:8000 apiReferências https://docs.docker.com/reference/dockerfile/
