Skip to content

Jcnok/azure-web-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Pipeline DevOps Completo: Do Push ao Deploy na Azure com FastAPI, Docker & GitHub Actions

Status do Deploy Azure Docker License Tech

Sumário

📦 Visão Geral

Este projeto mostra como construir um pipeline DevOps de ponta-a-ponta para publicar APIs Python com FastAPI, empacotadas em Docker e publicadas no Azure via Container Registry. Todo o fluxo de CI/CD está automatizado com GitHub Actions, desde o build até o deploy e atualização contínua do app a cada push.

🏗️ Arquitetura & Tecnologias

  • FastAPI (Python 3.11)
  • Docker (Containerização)
  • Azure Container Registry (Armazenamento da imagem)
  • Azure Web App Linux (Hospedagem)
  • GitHub Actions (Automação CI/CD)
  • Secrets no GitHub para credenciais seguras

💻 Como Rodar Localmente

  1. Instale Docker, Azure CLI e Git.
  2. Clone o repositório:
    git clone https://github.com/Jcnok/azure-web-api.git
    cd azure-web-api
    
  3. Crie e ative o ambiente virtual:
    python3 -m venv venv
    source venv/bin/activate    # Linux/Mac
    venv\Scripts\activate.bat   # Windows
    pip install -r requirements.txt
    
  4. Rode o servidor local:
    uvicorn main:app --reload
    
    Acesse localhost:8000/docs para ver a documentação Swagger.

🚀 Deploy Automático na Azure

  1. Provisionar recursos via Azure CLI (Resource Group, Container Registry, Web App, etc.).

  2. Configurar secrets no GitHub: ACR_USERNAME, ACR_PASSWORD, AZURE_WEBAPP_PUBLISH_PROFILE.

  3. Cada push na branch master dispara o pipeline (workflow) de CI/CD:

    • Build da imagem Docker
    • Push para o ACR
    • Deploy automático para o Web App com Always-On e publish via webhook
  4. URL de produção: https://jconwebapp.azurewebsites.net

✅ Checklist de Validação

  • API responde na URL pública
  • Documentação Swagger disponível em /docs
  • Push na branch main dispara workflow
  • Workflow conclui com badge verde
  • Secrets corretamente configurados no GitHub
  • Web App no plano B1 (Always-On e Implantação Contínua)
  • Imagem Docker disponível no ACR

🌟 Boas Práticas & Lições Aprendidas

  • Use sempre o plano B1 para o experimento(não use plano gratuito para produção/CICD)
  • Nunca commite credenciais; use secrets
  • Teste a aplicação localmente antes de containerizar
  • Nomes de ACR/WebApp devem ser globais e sem hífens para ACR
  • Prefira deployments via webhook para maior confiabilidade

🩺 Troubleshooting

  • Application Error: Quase sempre é porta. Verifique EXPOSE 8000 e config no Web App.
  • Secrets inválidos no login: Verifique credenciais ACR.
  • Deploy OK, mas não atualiza: Webhook pode não estar ativo, ou plano F1 está suspenso.
  • Documentação oficial Azure Web App
  • Documentação FastAPI

🔗 Links Úteis

👨‍💻 Autor

Julio Okuda
LinkedIn


Pronto para turbinar seus projetos?
Clone, experimente, contribua ou conecte-se para discutir melhorias ou parcerias!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published