Formação AWS

← Todos os artigos

Elastic Beanstalk com Docker: sua primeira aplicação no ar

ContainersPor Henrylle Maia · 15 out 2026 · 7 min de leitura

Dá para colocar uma aplicação em container no ar na AWS sem criar a instância EC2 nem montar o deploy. Com o AWS Elastic Beanstalk você sobe um arquivo zip com o docker-compose.yml e ele lança a máquina, faz o build da imagem e entrega uma URL pública. Este texto mostra o caminho completo, do clone do projeto ao deploy.

Gravei a aula em junho de 2022, e o console da AWS e as plataformas do Elastic Beanstalk mudam com o tempo. As versões e as telas que aparecem aqui são as daquele dia: confira as plataformas Docker atuais na documentação oficial.

O que o Elastic Beanstalk faz por você

O Elastic Beanstalk é o serviço da AWS que roda e gerencia aplicações. Ele conversa com vários outros serviços para automatizar o que você faria na mão.

Quando você sobe a aplicação, ela vai para a área Application Versions, e por baixo dos panos a versão fica guardada no S3. Em seguida ele dispara o deploy para uma instância EC2, e é ele mesmo quem lança essa instância. Também entrega um endpoint válido para a aplicação e deixa você controlar quantas instâncias ficam disponíveis durante o deploy.

O caminho do zip até a aplicação no ar: o Elastic Beanstalk guarda a versão, lança a EC2 e faz o deployCódigozip com o docker-compose.ymlApplication Versionsversão guardada no S3Elastic Beanstalkcria e gerencia o ambienteInstância EC2faz o build e roda o containerEndpointURL pública da aplicação
O caminho do zip até a aplicação no ar: o Elastic Beanstalk guarda a versão, lança a EC2 e faz o deploy

O serviço em si não tem custo. Você paga só pelos recursos que ele usa, no exemplo o S3 com a versão da aplicação e a instância onde ela roda.

1Baixar o projeto e ajustar o docker-compose.yml

Usei a aplicação da BIA, em Node com React, que já roda em container. O projeto é público no GitHub. Clone com HTTPS e abra no VS Code:

bash
git clone <url-https-do-projeto>
code bia

O Elastic Beanstalk consegue ler vários arquivos de configuração, e um deles é o Docker Compose. Por isso a adaptação é no docker-compose.yml. Eu queria rodar só a aplicação web, então:

  • Tirei o banco. O arquivo tinha dois serviços, server e database. Deixei só o server.
  • Tirei o links, que apontava para o banco e não funcionaria sem ele.
  • Troquei a porta. Localmente a aplicação expõe a 3001 (3001:8080). Na AWS ela precisa sair na porta 80 (80:8080), que é a que vou abrir para o mundo.
O docker-compose.yml ajustado: só o serviço server, com build: . e a porta 80:8080 (as variáveis DB_ continuam no arquivo)
O docker-compose.yml ajustado: só o serviço server, com build: . e a porta 80:8080 (as variáveis DB_ continuam no arquivo)

Com isso o Elastic Beanstalk lê o server, vê que ele tem um build no contexto atual, procura o Dockerfile e roda o projeto.

2Gerar o zip

Selecione todos os arquivos do projeto, clique com o botão direito e comprima em formato zip. Dei o nome bia-youtube.zip.

Os arquivos precisam estar na raiz do zip, não dentro de uma pasta. É na raiz que o Elastic Beanstalk procura o docker-compose.yml.

3Criar a aplicação

No console, pesquise por Elastic Beanstalk e crie uma aplicação.

  • Nome: bia-youtube. As tags de aplicação são opcionais, e eu não usei.
  • Plataforma: Docker. Na aula, a branch era "Docker running on 64bit Amazon Linux 2" e a versão da plataforma, a 3.4.16, a recomendada. Cada atualização de versão traz mais recursos: quando a AWS lança uma família de instâncias nova, em geral você precisa atualizar a plataforma para ela aparecer na lista do Elastic Beanstalk.
  • Código da aplicação: deixei o exemplo, porque o upload do zip vem depois.
A seção Platform do Elastic Beanstalk: plataforma Docker, branch Docker running on 64bit Amazon Linux 2 e versão 3.4.16 (Recomendada)
A seção Platform do Elastic Beanstalk: plataforma Docker, branch Docker running on 64bit Amazon Linux 2 e versão 3.4.16 (Recomendada)

Clique em Configure more options e escolha o preset Single Instance, uma aplicação só com uma instância, para não trazer complexidade. Software, X-Ray, logs e propriedades do ambiente ficam no padrão. Em Instância, mantive o padrão e mexi só no security group.

4Liberar a porta 80 no security group

Quero a instância acessível para o mundo na porta 80. Na aba de EC2, crie um security group (o meu chama BIA Web) com uma regra de entrada HTTP, porta 80, origem Anywhere. No meu já havia também uma regra de SSH, só para o meu IP, para o caso de eu precisar me conectar. Como não vou me conectar, a porta 80 bastaria.

Volte ao Elastic Beanstalk, escolha esse security group e salve. Depois configure:

  • Rede: a configuração padrão, com IP público habilitado para a instância. Em zona de disponibilidade posso escolher A, B ou C, e ele usa a que estiver disponível.
  • Banco: não configurei.
  • Capacidade: só a t2.micro, que na aula estava na camada gratuita.

Salve e crie a aplicação. Ele também cria um ambiente para ela, o bia-youtube-env, e leva alguns minutos. Dentro de uma aplicação cabem vários ambientes, e você cria os que precisar.

Quando o ambiente ficou com status Ok, abri a URL que ele liberou: carregou a página de exemplo do Elastic Beanstalk, a Sample Application que escolhi no passo 3.

O ambiente bia-youtube-env com Health Ok (ícone verde) e a versão em execução ainda Sample Application
O ambiente bia-youtube-env com Health Ok (ícone verde) e a versão em execução ainda Sample Application

5Subir o zip e fazer o deploy

Com o ambiente verde e a página de exemplo no ar, clique em Upload and deploy, escolha o zip e coloque o version label V1. Clique em Deploy.

O Elastic Beanstalk envia o zip para o ambiente, lê o docker-compose.yml, faz o build na própria instância e manda rodar. Leva de um a dois minutos. Na aula o processo todo, com os eventos, levou 4 minutos.

Sem eu fazer nada, ele criou a instância EC2 e também um Elastic IP para ela. Com uma instância só, se ela morrer e uma nova for lançada, o Elastic Beanstalk associa o mesmo IP à nova. O IP do ambiente não muda.

Em Application Versions aparece a versão em execução e a que está sendo implantada. Se precisar voltar, escolha a versão anterior e mande fazer o deploy dela. Quando o evento de deploy na instância conclui com sucesso e o ambiente fica verde, abra a URL que ele forneceu.

A aplicação da BIA no endereço do Elastic Beanstalk: título BIA 2022, botão Adicionar e a mensagem Nenhuma tarefa nesse momento
A aplicação da BIA no endereço do Elastic Beanstalk: título BIA 2022, botão Adicionar e a mensagem Nenhuma tarefa nesse momento

6Encerrar o ambiente

Terminada a prática, termine o ambiente. Sem ele, você fica livre de qualquer custo desse processo. Hoje isso pesa mais do que na gravação: desde 1º de fevereiro de 2024 a AWS cobra por todo endereço IPv4 público, inclusive o da instância e o Elastic IP que o ambiente usa.

O banco ficou de fora: aqui só roda a aplicação web. Se quiser levar adiante, o próximo passo é criar um banco no RDS e conectar à aplicação. Outro desafio é mudar algum arquivo do código, gerar um novo zip e fazer o deploy para ver a alteração no ambiente.

Checklist

  • Projeto clonado e docker-compose.yml só com o serviço da aplicação web, sem links para o banco.
  • Porta publicada como 80 no docker-compose.yml.
  • Zip com os arquivos na raiz.
  • Aplicação criada com a plataforma Docker e o preset Single Instance.
  • Security group liberando HTTP na porta 80, com SSH só para o seu IP, e IP público na instância.
  • Zip enviado em Upload and deploy, com um version label.
  • URL do ambiente aberta com a aplicação rodando.
  • Ambiente terminado ao final do teste.

O que os alunos dizem

  • “Depois do layoff, percebi que o mercado exigia AWS e eu não sabia nem por onde começar.”

    Gisele, Desenvolvedora Java Sênior

    Ver depoimento
  • “A metodologia da Formação AWS mudou tudo pra mim. Foi ela que consolidou meu conhecimento, me deu segurança e me levou a conquistar a vaga de Engenheiro de Cloud dentro da minha própria empresa.”

    Harnon Ramalho, Engenheiro de Cloud

    Ver depoimento
  • “A Formação AWS me deu a prática, a segurança e a clareza que eu nunca encontrei em nenhum outro curso.”

    Jhon Wilame, SRE / DevOps Engineer

    Ver depoimento

Formação AWS

Aprenda AWS e IA na prática, com projeto real e acompanhamento. Converse com o time sobre a Formação AWS.

Agende uma conversa

Prefere assistir?

A aula completa (24 min) está no canal Domine AWS. O vídeo toca aqui mesmo.

Leia também

Compartilhe este post