Partilhar via


Implantar um aplicativo Web Flask ou FastAPI em Aplicativos de Contêiner do Azure

Este tutorial mostra como contentorizar uma aplicação Web Python Flask ou FastAPI e implementá-la nas Aplicações de Contentor 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, precisa de:

Obter o código de exemplo

Em seu ambiente local, obtenha o código.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart.git

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 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", "app:app"]

50505 é usado para a porta de contêiner (interna) neste exemplo, mas você pode usar qualquer porta livre.

Verifique o ficheiro .txt requisitos para se certificar de que contém gunicornficheiros .

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

Gunicorn pode ser configurado com um arquivo gunicorn.conf.py . Quando o arquivo gunicorn.conf.py está localizado no mesmo diretório onde gunicorn é executado, você não precisa especificar seu local na ENTRYPOINT instrução ou CMD no 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

Crie e execute a imagem localmente

Crie a imagem localmente.

docker build --tag flask-demo .

Execute a imagem localmente num contentor 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 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.

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
  • Um aplicativo de contêiner executando a imagem do aplicativo Web
  • Um espaço de trabalho 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. A forma da URL será semelhante à seguinte https://web-aca-app.<generated-text>.<location-info>.azurecontainerapps.io, onde o <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. A execução do comando novamente leva em conta que o grupo de recursos e o aplicativo já existem e atualiza apenas o aplicativo 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 contêiner.

Limpeza

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 do 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 .

az group delete --name web-flask-aca-rg

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óximos passos

Para obter mais informações, consulte os seguintes recursos: