Skip to content

ronayrton/api-escolar-fastapi-docker

Repository files navigation

Imersão DevOps - Alura Google Cloud

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

Pré-requisitos

Dia 1: subindo o projeto

  1. Faça o download do repositório: Clique aqui para realizar o download

  2. Crie um ambiente virtual:

    python3 -m venv ./venv

    No meu windows, usei python -m venv ./venv

  3. 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
  4. Instale as dependências:

    pip install -r requirements.txt
  5. Execute a aplicação:

    uvicorn app:app --reload
  6. Acesse a documentação interativa:

    Abra o navegador e acesse:
    http://127.0.0.1:8000/docs

    Aqui você pode testar todos os endpoints da API de forma interativa.


Estrutura do Projeto

📦 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


Observações

  • O banco de dados SQLite será criado automaticamente como escola.db na primeira execução.
  • Para reiniciar o banco, basta apagar o arquivo escola.db (isso apagará todos os dados).

Resultado

API rodando no ambiente virtual local

Arquitetura do Projeto (versão local)

                   ┌────────────────────┐
                   │     Usuário        │
                   │ (Navegador/Client) │
                   └────────┬───────────┘
                            │
                            ▼
                ┌────────────────────────┐
                │     FastAPI (app.py)   │
                │  ────────────────────  │
                │  Rotas (routers/)      │
                │  Schemas (schemas.py)  │
                │  Models (models.py)    │
                │  DB (database.py)      │
                └───────────┬────────────┘
                            │
                            ▼
             ┌────────────────────────────┐
             │    Banco de Dados SQLite   │
             │        (escola.db)         │
             └────────────────────────────┘

Futuro com Docker

                ┌──────────────────────────────────────┐
                │              Docker                  │
                └──────────────────────────────────────┘
                      │                      │
      ┌───────────────┘                      └──────────────┐
      ▼                                                     ▼

┌──────────────────────────────┐ ┌──────────────────────────────┐ │ Container: FastAPI │ │ Container: SQLite (local) │ │ (app.py, routers, models...) │ │ (ou possível Postgres) │ └────────────┬─────────────────┘ └────────────┬─────────────────┘ │ │ ▼ ▼ Acesso via navegador Volume persistente (opcional)

Criando com Docker

  1. Criar Dockerfile com instruções de build

  2. Criar .dockerignore para ignorar arquivos desnecessários

  3. Construir a imagem Docker:

 docker build -t api .
  1. Executar a imagem:
 docker run -d -p 8000:8000 api

Referências

Referências https://docs.docker.com/reference/dockerfile/

About

API escolar com FastAPI + Docker, criada na Imersão DevOps (Alura + Google Cloud). Projeto com foco em containerização e boas práticas DevOps.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors