Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
MongoDBchevron-right

Criando um aplicativo Flask e MongoDB com aplicativos de contêiner do Azure

Anaiya Raisinghani8 min read • Published Jun 01, 2023 • Updated Apr 02, 2024
MongoDBPython
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Artigo
star-empty
star-empty
star-empty
star-empty
star-empty
Para aqueles que querem se concentrar na criação de aplicativos em container escaláveis sem precisar se preocupar com o gerenciamento de nenhum ambiente, este é o tutorial para você! Vamos hospedar uma versão dockerizada do nosso aplicativoFlask e MongoDB Atlas criado anteriormente nos Aplicativos de Container do Azure.
O Azure Container Apps realmente simplifica não apenas a implantação, mas também o gerenciamento de aplicativos e microsserviços em contêineres em uma plataforma sem servidor. Este serviço da Microsoft também oferece uma enorme variedade de integrações com outras plataformas Azure, facilitando o dimensionamento ou melhoria da sua aplicação ao longo do tempo. A combinação de Flask, Atlase Container Apps permite que os desenvolvedores criem aplicativos que são capazes de lidar com grandes quantidades de dados e tráfego, ao mesmo tempo que são extremamente acessíveis a partir de qualquer máquina ou ambiente.
As especificidades deste tutorial são as seguintes: clonaremos nosso aplicativo Flask criado anteriormente que utiliza a funcionalidade CRUD (criar, ler, atualizar e excluir) aplicada a um “bookshelf” criado no MongoDB Atlas. Quando estiver instalado e funcionando corretamente e conectado ao Postman ou usando o cURL, podemos adicionar novos livros, ler novamente todos os livros em nosso banco de dados, atualizar (trocar) um livro e até excluir livros. A partir daqui, vamos dockerizar nosso aplicativo e, em seguida, hospedaremos nossa imagem dockerized nos Aplicativos de Container do Azure. Feito isso, qualquer pessoa em qualquer lugar poderá acessar nosso aplicativo!
O sucesso de seguir este tutorial requer alguns pré-requisitos:

Antes de começarmos...

Antes de continuarmos com a containerização de nosso aplicativo, certifique-se de que você tenha uma compreensão adequada do nosso programa por meio deste artigo: Scaling for Demand: Implantando aplicativos Python usando o MongoDB Atlas no Azure App Service. Ele entra em muitos detalhes sobre como construir e conectar corretamente um banco de dados do MongoDB Atlas ao nosso aplicativo juntamente com os meandros do próprio aplicativo. Se você é iniciante, certifique-se de entender completamente o aplicativo antes de containerizá-lo por meio do Docker.

Insights sobre nosso banco de dados

Antes de passar para nossa demonstração, se você seguiu nosso link de demonstração anterior acima, é assim que seu banco de dados do Atlas pode ficar. Esses livros foram adicionados no final da demonstração anterior usando nosso endpoint. Se você estiver usando seu próprio aplicativo, uma collection vazia será suportada. Mas se você tiver documentos existentes, eles precisam apoiar nosso esquema ou uma mensagem de erro será exibida: livros no banco de dados
Estamos começando com quatro livros com várias páginas. Uma vez conectado e hospedado corretamente nos aplicativos de container do Azure, quando nos conectarmos ao nosso endpoint/books, esses volumes aparecerão.

Criando um Dockerfile

Depois de criar uma versão clonada do aplicativo, é hora de criar nosso Dockerfile. Um Dockerfile é importante porque contém todas as informações e comandos para montar uma imagem. A partir dos comandos em um Dockerfile, o Docker pode construir a imagem automaticamente com apenas um comando da sua CLI.
Em seu diretório de trabalho, crie um novo arquivo chamado Dockerfile e insira estes comandos:
1FROM python:3.9-slim-buster
2WORKDIR /azurecontainerappsdemo
3
4
5COPY ./config/requirements.txt /azurecontainerappsdemo/
6RUN pip install -r requirements.txt
7
8
9COPY . /azurecontainerappsdemo/
10
11
12ENV FLASK_APP=app.py
13EXPOSE 5000
14CMD ["flask", "run", "--host=0.0.0.0"]
Certifique-se de que seu arquivorequirements.txt seja colocado em uma nova pasta chamada /config. Isso é para que possamos ter certeza de que nosso arquivorequirements.txt seja localizado e copiado corretamente com nosso Dockerfile, pois ele é crucial para nossa demonstração.
Nossa imagem de base python:3.9-slim-buster é essencial porque fornece um ponto de partida para a criação de uma nova imagem de contêiner. No Docker, as imagens de base contêm todos os componentes necessários para criar e executar um aplicativo com êxito. O restante dos comandos copia todos os arquivos em nosso diretório de trabalho, expõe a porta padrão do Flask 5000 e especifica como executar nosso aplicativo, permitindo o acesso à rede de qualquer lugar. É fundamental incluir o --host=0.0.0.0 porque, caso contrário, quando tentarmos hospedar nosso aplicativo no Azure, ele não se conectará corretamente.
Em nosso arquivo app.py, certifique-se de adicionar as duas linhas a seguir na parte inferior do arquivo:
1if __name__ == '__main__':
2 app.run(host='0.0.0.0', debug=True)
Isso mais uma vez permite que o Flask execute o aplicativo, garantindo que ele seja acessível de qualquer rede.
Opcional
Você pode testar e ter certeza de que seu aplicativo está devidamente dockerizado com estes comandos:
Construir: docker build --tag azurecontainerappsdemo .
Executar: docker run -d -p 5000:5000 -e "CONNECTION_STRING=<MONGODB_ATLAS_URI_STRING_HERE>" azurecontainerappsdemo
Você deve ver seu aplicativo instalado e funcionando em seu host local.
aplicação hospedada no host local
Agora, podemos usar o Azure Container Apps para executar nosso aplicativo em contêiner sem nos preocuparmos com a infraestrutura em uma plataforma sem servidor. Go ver como fazer isso.

Criando um Azure container Registry

Vamos construir e enviar nossa imagem para nosso Registro de container do Azure para hospedar nosso aplicativo com êxito. Para fazer isso, certifique-se de que está conectado ao Azure. Existem várias maneiras de criar um Azure container Registry: por meio da interface do usuário, da linha de comando ou até mesmo pela extensão VSCode. Para simplificar, este tutorial mostrará como fazer isso por meio da interface do usuário.
Nossa primeira etapa é fazer login no Azure e acessar o serviço de Registro de Contêineres. Clique para criar um novo registro e você será direcionado para esta página: como criar um registro de container
Escolha qual grupo de recursos você deseja usar, juntamente com um nome de registro (isso servirá como sua URL de login) e local. Anote-os porque, quando iniciamos nosso aplicativo de contêiner, todos eles precisam ser iguais. Depois que eles estiverem no lugar, pressione o botão Revisar e criar. Depois de configurado, seu registro ficará assim:
registro do contêiner depois de criado
Agora que você tem seu registro de container em vigor, vamos acessá-lo no VSCode. Certifique-se de ter a extensão Docker instalada. Go para registros, entre em sua conta do Azure e conecte seu registro. O meu é chamado de "anaiyaregistry " e, quando configurado, fica assim: Registro do Azure configurado no VSCode
Agora, faça login no seu ACR usando este comando: docker login <azure registry url>
Por exemplo, o meu é: docker login anaiyaregistry.azurecr.io
Você terá que Go até Chaves de acesso dentro do seu container e clicar em Acesso de Administrador. Em seguida, use esse nome de usuário e senha para fazer login no seu terminal quando solicitado. Se você estiver em uma máquina Windows, certifique-se de clicar com o botão direito do mouse para colar. Caso contrário, será exibido um erro: Página Chaves de acesso em nosso registro
Quando você fizer logon com êxito em sua assinatura do Azure e no Registro do Azure, poderemos prosseguir para a criação e o envio por push de nossa imagem.

Construindo e enviando nossa imagem para o Registro de container do Azure

Precisamos agora construir nossa imagem e enviá-la para nosso Registro de Contêiner do Azure.
Se você estiver usando um M1 Mac, precisamos reconfigurar nossa imagem para que ela use amd64em vez doarm64 configurado . Isso ocorre porque, no momento, os Aplicativos de Container do Azure oferecem suporte apenas a imagens de contêinerlinux/amd64 e, com uma máquina M1 , sua imagem será automaticamente criada como arm. Para contornar isso, utilizaremos o Buildx, um plug-in Docker que permite criar e enviar imagens para várias plataformas e arquiteturas.
Se você não estiver usando um Mac M1 , pule para nossa seção "Non-M1 Machines ".

Instalar Buildx

Para instalar obuildx em sua máquina, coloque os seguintes comandos:
docker buildx install
Para habilitar buildx para usar a Docker CLI, digite:
docker buildx create –use
Quando isso for executado e um nome de container aleatório aparecer em seu terminal, você saberá que buildx foi instalado corretamente.

Construindo e impulsionando nossa imagem

O comando para construir nossa imagem é o seguinte: docker buildx build --platform linux/amd64 --t <azure registry url>/<image name>:<image tag> --output type=docker .
Como exemplo, meu comando de construção é: docker buildx build --platform linux/amd64 --t anaiyaregistry.azurecr.io/azurecontainerappsdemo:latest --output type=docker .
Especificar a plataforma em que você deseja que sua imagem seja executada é a parte mais importante. Caso contrário, quando tentarmos hospedá-lo no Azure, receberemos um erro.
Depois que isso for bem-sucedido, precisamos enviar nossa imagem para nosso registro. Podemos fazer isso com o comando:
docker push <azure registry url>/<image name>:<image tag>
Como exemplo, meu comando push é:
docker push anaiyaregistry.azurecr.io/azurecontainerappsdemo:latest

Máquinas Mac não-M1

Se você tiver uma máquina não-M1 , siga as etapas acima, mas fique à vontade para ignorar a instalação do buildx. Por exemplo, seu comando de construção será:
docker build --t <azure registry url>/<image name>:<image tag> --output type=docker .
Seu comando push será:
docker push <azure registry url>/<image name>:<image tag>

Máquinas com Windows

Para máquinas Windows, use o seguinte comando de compilação:
docker build --t <azure registry url>/<image name>:<image tag> .
E use o seguinte comando push:
docker push <image name>:<image tag>
Depois que seu push for bem-sucedido, vamos garantir que possamos vê-lo corretamente em nossa interface de usuário do Azure. Acesse seu serviço Container Registries e clique em seu registro. Em seguida, clique em Repositórios. onde encontrar nosso repositório na página do Registro de Contêineres do Azure
Clique novamente em seu repositório e haverá uma imagem chamada latest, pois foi com esse nome que marcamos nossa imagem quando a enviamos. Essa é a imagem que vamos hospedar em nosso serviço de aplicativo de contêiner.

Criando nosso aplicativo de container do Azure

Vamos criar nosso app container por meio da interface de usuário do Azure.
Acesse seu serviço de aplicativos de container e clique em Criar.
Agora acesse seus aplicativos de contêiner na IU. Clique em Criar e preencha o "Basics " assim: Como criar um aplicativo de contêiner no Azure Container Apps
**Se esta é a primeira vez que você cria um Azure Container App, certifique-se de que um ambiente seja criado quando o aplicativo for criado. Um ambiente de Container Apps é crucial, pois cria um limite seguro em torno de várias aplicações de container que existem na mesma rede virtual. Para verificar seus ambientes de Aplicativos de Contêiner, eles podem ser acessados em "Container Apps Environments " em seu portal do Azure. visual do nosso ambiente de aplicação container no Azure
Como podemos ver, o ambiente que escolhemos acima está disponível na guia Container Apps Environments.
Certifique-se de que sua região e grupo de recursos sejam idênticos às opções escolhidas ao criar seu registro em uma etapa anterior. Quando terminar de inserir o “Basics,”, clique em Configurações do aplicativo e desmarque “Use quickstart image.”. Em “Image Source,”, clique no Azure Container Registry e insira as informações da imagem. As Configurações do aplicativo fazem parte da criação de um aplicativo de contêiner no Azure
Na parte inferior, insira sua variável de ambiente (sua connection string. Ela está localizada no Atlas e no seu arquivo .env, se for copiada da demonstração anterior): como configurar corretamente nossas variáveis de ambiente em aplicativos de container do Azure
Abaixo disso, clique em “Enabled” para entrar e preencha o resto assim: continuação da configuração de nosso aplicativo de container no Azure
Quando terminar, clique em Revisar e criar na parte inferior da tela.
Página de implantação do Container App
Você verá esta página quando sua implantação for bem-sucedida. Pressione Go para Recurso.
onde encontrar nosso URL do aplicativo container
Clique em “Application URL” no lado direito. nosso aplicativo hospedado em aplicativos Azure Container
Você será direcionado para seu aplicativo.
Se alterarmos o URL para incorporar nossa rota "/books", veremos todos os livros de nosso banco de dados do Atlas! visualizar nossos livros usando nosso endpoint depois de hospedá-lo nos aplicativos Azure Container

Conclusão

Nosso aplicativo Flask e MongoDB Atlas foi conteinerizado e hospedado com sucesso no Azure Container Apps! Neste artigo, analisamos como criar um Dockerfile e um Registro de Contêiner do Azure, além de como criar e hospedar nosso aplicativo nos Aplicativos de Contêiner do Azure.
Obtenha mais detalhes sobre os aplicativosMongoDB Atlas ou Azure Container.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Artigo
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Artigo

Sincronização inicial retomável no MongoDB 4.4


Sep 11, 2024 | 5 min read
Podcast

Tornando os dados sobre diabetes mais acessíveis e significativos com o Tidepool e o MongoDB


Aug 14, 2024 | 15 min
Tutorial

Instalar e configurar o MongoDB no Raspberry Pi


Sep 11, 2024 | 8 min read
Artigo

Tudo que você sabe sobre MongoDB está errado!


Sep 23, 2022 | 11 min read