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.
- 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
- Instale Docker, Azure CLI e Git.
- Clone o repositório:
git clone https://github.com/Jcnok/azure-web-api.git cd azure-web-api - 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 - Rode o servidor local:
Acesse localhost:8000/docs para ver a documentação Swagger.
uvicorn main:app --reload
-
Provisionar recursos via Azure CLI (Resource Group, Container Registry, Web App, etc.).
-
Configurar secrets no GitHub:
ACR_USERNAME,ACR_PASSWORD,AZURE_WEBAPP_PUBLISH_PROFILE. -
Cada push na branch
masterdispara 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
-
URL de produção: https://jconwebapp.azurewebsites.net
- 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
- 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
- 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
Julio Okuda
LinkedIn
Pronto para turbinar seus projetos?
Clone, experimente, contribua ou conecte-se para discutir melhorias ou parcerias!