Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tutorial mostra como colocar em contêiner um aplicativo Web Python Flask ou FastAPI e implantá-lo em Azure Container Apps. Azure Container Apps usa a tecnologia de contêiner Docker para hospedar imagens internas e imagens personalizadas. Para obter mais informações sobre como usar contêineres no Azure, consulte Comparando opções de contêiner do Azure.
Neste tutorial, você usará a CLI Docker e o Azure CLI para criar uma imagem do Docker e implantá-la no Azure Container Apps. Você também pode implantar usando Visual Studio Code e a Azure Tools Extension.
Pré-requisitos
Para concluir este tutorial, você precisará:
Uma conta Azure em que você pode implantar um aplicativo Web para Azure Container Apps. (O processo cria um Azure Container Registry e um Log Analytics workspace para você.)
Azure CLI, Docker e a CLI Docker instalada em 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 da Web em nível de produção que encaminha solicitações da Web para as estruturas Flask e FastAPI. Os comandos ENTRYPOINT e CMD instruim o Gunicorn a lidar com solicitações para o objeto do aplicativo.
# 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 de contêiner (interna), mas você pode usar qualquer porta gratuita.
Verifique o arquivo requirements.txt para certificar-se de que ele contém gunicorn.
Flask==3.1.0
gunicorn
Configurar gunicorn
Você pode configurar o Gunicorn usando um arquivo gunicorn.conf.py . Quando o arquivo gunicorn.conf.py estiver no mesmo diretório em que você executagunicorn, não será necessário especificar seu local na ENTRYPOINT instrução do CMD. Para obter mais informações sobre como especificar o arquivo de configuração, consulte Configurações do Gunicorn.
Neste tutorial, o arquivo de configuração sugerido configura o Gunicorn para aumentar seu número de trabalhos com base no número de núcleos de CPU disponíveis. Para obter mais informações sobre configurações de 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/
Criar e executar a imagem localmente
Crie a imagem localmente.
Execute a imagem localmente em um contêiner do Docker.
docker run --detach --publish 5000:50505 flask-demo
Abra http://localhost:5000 no navegador para ver o aplicativo Web em execução localmente.
A opção --detach executa o contêiner em segundo plano. A opção --publish mapeia a porta do contêiner para uma porta no host. A porta do host (externa) é a primeira no par e a porta do contêiner (interna) é a segunda. Para obter mais informações, confira Referência sobre docker run.
Implantar aplicativo Web para Azure
Para implantar a imagem do Docker em Azure Container Apps, use o comando az containerapp up. (Os comandos a seguir são mostrados para o shell do 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 implantação for concluída, você terá um grupo de recursos com os seguintes recursos dentro dele:
- O Registro de Containers do Azure
- Um ambiente de aplicações de contêiner
- Um aplicativo em contêiner executando a imagem do aplicativo Web
- Workspace de Log Analytics
A saída do az containerapp up comando inclui a URL do aplicativo implantado. Abra a URL no navegador para ver o aplicativo Web em execução no Azure. A URL se parece com a seguinte https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io, em que o <generated-text> e o <location-info> são exclusivos para sua implantação.
Faça atualizações e reimplante
Depois de fazer atualizações de código, execute o comando anterior az containerapp up novamente. O comando recria a imagem e a reimplanta para Azure Container Apps. Quando você executa o comando novamente, ele detecta que o grupo de recursos e o aplicativo já existem e atualiza apenas o aplicativo de contêiner.
Em cenários de atualização mais complexos, você pode reimplantar usando os comandos az acr build e az containerapp update juntos para atualizar o aplicativo de contêiner.
Limpeza
Todos os recursos Azure que você criou neste tutorial estão no mesmo grupo de recursos. A remoção do grupo de recursos remove todos os recursos no grupo de recursos. É a maneira mais rápida de remover todos os recursos de Azure usados para seu aplicativo.
Para remover recursos, use o comando az group delete.
Você também pode remover o grupo no portal Azure ou em Visual Studio Code usando a Extensão de Ferramentas Azure.
Próximas etapas
Para obter mais informações, consulte os seguintes recursos: