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