Implantar um aplicativo Web Flask ou FastAPI nos Aplicativos de Contêiner do Azure
Este tutorial mostra como colocar em contêiner um aplicativo Web Python Flask ou FastAPI e implantá-lo nos Aplicativos de Contêiner do Azure. Os Aplicativos de Contêiner do Azure usam a tecnologia de contêiner do 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ê usa a CLI do Docker e a CLI do Azure para criar uma imagem do Docker e implantá-la nos Aplicativos de Contêiner do Azure. Você também pode implantar com o Visual Studio Code e a Extensão de Ferramentas do Azure.
Pré-requisitos
Para concluir este tutorial, você precisará de:
Uma conta do Azure onde você pode implantar um aplicativo Web nos Aplicativos de Contêiner do Azure. (Um O espaço de trabalho do Registro de Contêiner e do Log Analytics do Azure é criado para você no processo.)
A CLI do Azure, o Docker e a CLI do Docker instalados 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 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 manipular 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", "app:app"]
50505
é usado para a porta de contêiner (interna) neste exemplo, mas você pode usar qualquer porta livre.
Verifique os requisitos.txt arquivo para certificar-se de que ele contém gunicorn
.
Flask==2.2.2
gunicorn
Werkzeug==2.2.2
Adicione um arquivo .dockerignore para excluir arquivos desnecessários da imagem.
.git*
**/*.pyc
.venv/
Configurar gunicorn
O Gunicorn pode ser configurado com um arquivo gunicorn.conf.py . Quando o arquivo gunicorn.conf.py está localizado no mesmo diretório em que gunicorn
é executado, você não precisa especificar seu local 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 arquivo de configuração sugerido configura o GUnicorn para aumentar seu número de trabalhadores com base no número de núcleos de CPU disponíveis. Para obter mais informações sobre gunicorn.conf.py configurações de arquivo, 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
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 o URL no navegador para ver o http://localhost:5000
aplicativo Web em execução 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 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 no Azure
Para implantar a imagem do Docker nos Aplicativos de Contêiner do Azure, 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 implantação for concluída, você terá um grupo de recursos com os seguintes recursos dentro dele:
- Um Registro de Contêiner do Azure
- Um ambiente de Aplicativos de Contêiner do Azure
- Um aplicativo de contêiner executando a imagem do aplicativo Web
- Um workspace do Log Analytics
A URL do aplicativo implantado está na saída do az containerapp up
comando. Abra a URL em seu navegador para ver o aplicativo Web em execução no Azure. O formulário da URL será semelhante ao seguinte https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io
, onde os <generated-text>
e <location-info>
são exclusivos para sua implantação.
Fazer atualizações e reimplantar
Depois de fazer atualizações de código, você pode executar o comando anterior az containerapp up
novamente, que recria a imagem e a reimplanta nos Aplicativos de Contêiner do Azure. Executar o comando novamente leva em conta 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 com os comandos az acr build e az containerapp update juntos para atualizar o aplicativo de contêiner.
Limpar
Todos os recursos do Azure criados neste tutorial estão no mesmo grupo de recursos. A remoção do grupo de recursos remove todos os recursos no grupo de recursos e é a maneira mais rápida de remover todos os recursos do Azure usados para seu aplicativo.
Para remover recursos, use o comando az group delete .
Você também pode remover o grupo no portal do Azure ou no Visual Studio Code e na Extensão de Ferramentas do Azure.
Próximas etapas
Para saber mais, consulte os recursos a seguir: