Implantar uma aplicação Web de contêiner no Amazon Lightsail

GUIA DE CONCEITOS BÁSICOS

Módulo 1: Preparar seu contêiner

Neste módulo, criaremos uma aplicação Web básica em contêiner

Introdução

Neste módulo, revisaremos a aplicação de exemplo fornecida com este guia.  Trabalharemos na construção de um contêiner para executar a aplicação Web fornecida localmente e testar aplicação Web em nosso laptop local antes de implantá-la na nuvem.

O que você aprenderá

  • Construir um contêiner para uma aplicação Web existente
  • Executar um contêiner para testar uma aplicação localmente

Pré-requisitos

Antes de iniciar este guia, você precisará de:

  • Docker Desktop instalado
  • Conhecimento básico funcional dos comandos do Docker

 Tempo para a conclusão

10 minutos

 Pré-requisitos do módulo

  • Conta da AWS com acesso de administrador**
  • Navegador recomendado: versão mais recente do Chrome ou Firefox

[**]Talvez as contas criadas nas últimas 24 horas ainda não tenham acesso aos serviços necessários para este tutorial.

Implementação

Crie a aplicação cliente

A aplicação Web fornecida na pasta de código foi desenvolvida com o framework da aplicação Flask para Python.

Resumindo, o framework do Flask inclui um minisservidor para receber solicitações HTTP, um mecanismo de roteamento para associar solicitações específicas (um verbo HTTP e um /path) ao seu código Python e um mecanismo de modelagem para renderizar o HTML final.

Uma prática recomendada é ter um servidor da Web dedicado na frente da sya aplicação Flask. O servidor da Web é configurado para servir conteúdo estático, como imagens, folhas de estilo (CSS) e arquivos JavaScript (JS). O servidor da Web encaminha todas as outras solicitações à sua aplicação Flask. Para este guia, optamos por usar o servidor da Web Nginx.

A comunicação entre o Nginx e a aplicação Flask é feita com o protocolo uWSGI. O componente uWSGI é fornecido pelo Flask.

A configuração da aplicação é ilustrada por esta imagem.

A aplicação é composta pelos seguintes arquivos:

  • application.py é o núcleo da aplicação, ele define a lógica, a comunicação com um backend, se houver, etc.
  • Pipfile lista as dependências de Python da aplicação Web.
  • Dockerfile configura o contêiner. Ele inicia a partir de um contêiner Nginx oficial, adiciona Python, Flask e suas dependências. Em seguida, ele copia o arquivo de configuração nginx e um script de inicialização.
  • nginx-app.conf é o arquivo de configuração do Nginx. Ele garante que o conteúdo estático seja servido pelo Nginx enquanto outras solicitações são passadas para uWSGI/Flask
  • start.sh inicia os daemons Nginx e uWSGI.

A aplicação é uma aplicação Web simples para anunciar o lançamento de um novo serviço ou produto e possui um formulário para captura de pré-cadastros.

Baixe o projeto

Para criar e testar o contêiner, baixe uma cópia local do projeto.

Abra um terminal e digite os seguintes comandos:

git clone https://github.com/aws-developer-center/dev-center-guides/

cd dev-center-guides/GS_003_web_app_lightsail/code

A partir de agora, todos os comandos presumem que você navegou até este diretório.

Crie seu contêiner

Agora que você tem uma boa ideia dos principais componentes da aplicação e como eles funcionam juntos, vamos criar um contêiner.

Para criar a aplicação dentro de um contêiner, use seu terminal e digite os seguintes comandos:

# Assuming you navigated to the application directory as instructed above 
# Make sure to include the space and period after signup in the below command

docker build -t demo-flask-signup .


Depois de alguns minutos (dependendo da largura de banda da Internet), o contêiner é criado.

Você pode listar todas as imagens de contêiner em seu sistema usando o seguinte comando:

docker images

# It should output something similar to 

REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
demo-flask-signup   latest    26d7924c5980   28 minutes ago   640MB
(...)

Teste seu contêiner

Para testar o contêiner em sua máquina local, primeiro inicie o contêiner e, em seguida, aponte um navegador para ele.

docker run -p 8080:80               \
           --rm                     \
           -v ~/.aws:/root/.aws     \
           demo-flask-signup:latest

As opções passadas para o comando docker run são

  • -p 8080:80 para fazer uma bridge da porta TCP 8080 do seu computador local para a porta 80 (Nginx) do contêiner
  • --rm para instruir o docker a remover o contêiner quando ele parar
  • -v ~/.aws:/root/.aws para mapear sua configuração de máquina local da AWS CLI no diretório ~/.aws ao diretório do contêiner /root/.aws
  • Finalmente, demo-flask-signup:latest: o nome e a etiqueta do contêiner que acabamos de criar.

Agora que o contêiner está em execução, abra um navegador e aponte-o para http://localhost:8080. Você deverá ver a tela inicial da aplicação, conforme mostrado abaixo.

Parabéns, agora você tem um contêiner pronto para ser implantado na nuvem.

Conclusão

Neste primeiro módulo, construímos uma aplicação de contêiner muito básica e a executamos localmente para garantir seu funcionamento. No próximo módulo, aprenderemos a criar um serviço de contêiner do Amazon Lightsail.

A seguir: Criar infraestrutura

Envie seus comentários.