Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este tutorial mostra-lhe como containerizar uma aplicação web Python Flask ou FastAPI e implementá-la em Azure Container Apps. Azure Container Apps utiliza a tecnologia de contentores Docker para alojar tanto imagens incorporadas como imagens personalizadas. Para mais informações sobre o uso de contentores em Azure, consulte Comparando opções de contentores Azure.
Neste tutorial, utilizas a CLI Docker e a Azure CLI para criar uma imagem Docker e implementá-la em Azure Container Apps. Também pode implementar usando Visual Studio Code e a Extensão de Ferramentas Azure.
Pré-requisitos
Para concluir este tutorial, você precisa:
Uma conta Azure onde podes implementar uma aplicação web para Azure Container Apps. (O processo cria um espaço de trabalho Azure Container Registry e Log Analytics para si.)
Azure CLI, Docker, e a Docker CLI instalados no seu ambiente local.
Obter o código de exemplo
Em seu ambiente local, obtenha o código.
Adicionar arquivos Dockerfile e .dockerignore
Adicione um Dockerfile para instruir o Docker sobre como criar a imagem. O Dockerfile especifica o uso do Gunicorn, um servidor Web de nível de produção que encaminha solicitações da Web para as estruturas Flask e FastAPI. Os comandos ENTRYPOINT e CMD instruem o Gunicorn a tratar dos pedidos para o objeto da aplicação.
# syntax=docker/dockerfile:1
FROM python:3.11
WORKDIR /code
COPY requirements.txt .
RUN pip3 install -r requirements.txt
COPY . .
EXPOSE 50505
ENTRYPOINT ["gunicorn", "--config", "gunicorn.conf.py", "app:app"]
Este exemplo usa 50505 para a porta do contentor (interna), mas pode usar qualquer porta livre.
Verifique o ficheiro requirements.txt para se certificar de que contém gunicorn.
Flask==3.1.0
gunicorn
Configurar gunicorn
Podes configurar o Gunicorn usando um ficheiro gunicorn.conf.py . Quando o ficheiro gunicorn.conf.py está no mesmo diretório onde executas gunicorn, não precisas de especificar a sua localização na ENTRYPOINT instrução ou CMD do Dockerfile. Para obter mais informações sobre como especificar o arquivo de configuração, consulte Configurações do Gunicorn.
Neste tutorial, o ficheiro de configuração sugerido configura o Gunicorn para aumentar o número de trabalhadores com base no número de núcleos de CPU disponíveis. Para obter mais informações sobre as configurações do arquivo gunicorn.conf.py, consulte Configuração do Gunicorn.
# Gunicorn configuration file
import multiprocessing
max_requests = 1000
max_requests_jitter = 50
log_file = "-"
bind = "0.0.0.0:50505"
workers = (multiprocessing.cpu_count() * 2) + 1
threads = workers
timeout = 120
Adicione um arquivo .dockerignore para excluir arquivos desnecessários da imagem.
.git*
**/*.pyc
.venv/
Crie e execute a imagem localmente
Crie a imagem localmente.
Execute a imagem localmente num contentor do Docker.
docker run --detach --publish 5000:50505 flask-demo
Abre http://localhost:5000 no teu navegador para veres a aplicação web a correr localmente.
A --detach opção executa o contêiner em segundo plano. A --publish opção mapeia a porta do contêiner para uma porta no host. A porta host (externa) é a primeira no par e a porta do contêiner (interna) é a segunda. Para obter mais informações, consulte Referência de execução do Docker.
Implementar a aplicação web no Azure
Para implementar a imagem Docker para Azure Container Apps, use o comando az containerapp up. (Os comandos a seguir são mostrados para o shell Bash. Altere o caractere de continuação (\) conforme apropriado para outros shells.)
az containerapp up \
--resource-group web-flask-aca-rg --name web-aca-app \
--ingress external --target-port 50505 --source .
Quando a implementação for concluída, terá um grupo de recursos com os seguintes recursos no seu interior:
- An Azure Container Registry
- Um ambiente de aplicações de contêiner
- Um aplicativo de contêiner executando a imagem do aplicativo Web
- Um espaço de trabalho de Log Analytics
A saída do az containerapp up comando inclui o URL da aplicação implementada. Abra o URL no seu navegador para ver a aplicação web a correr no Azure. A URL é a seguinte https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io, onde os <generated-text> e <location-info> são únicos para a sua implementação.
Fazer atualizações e reimplementar
Depois de fazeres atualizações de código, executa novamente o comando anterior az containerapp up . O comando reconstrói a imagem e volta a distribuí-la para o Azure Container Apps. Quando executas o comando novamente, ele deteta que o grupo de recursos e a aplicação já existem, e atualiza apenas a aplicação do contentor.
Em cenários de atualização mais complexos, pode-se reimplementar usando os comandos az acr build e az containerapp update em conjunto para atualizar a aplicação de contentor.
Limpeza
Todos os recursos do Azure que criaste neste tutorial estão no mesmo grupo de recursos. Remover o grupo de recursos remove todos os recursos do grupo de recursos. É a forma mais rápida de remover todos os recursos do Azure usados na tua aplicação.
Para remover os recursos, use o comando az group delete.
Também pode remover o grupo no portal Azure ou no Visual Studio Code usando a Extensão de Ferramentas Azure.
Próximos passos
Para obter mais informações, consulte os seguintes recursos: