As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usar a plataforma Docker
O AWS Elastic Beanstalk pode iniciar ambientes do Docker compilando uma imagem descrita em Dockerfile
ou acionando uma imagem do Docker remota. Se você estiver implantando uma imagem do Docker remota, você não precisará incluir um Dockerfile
. Em vez disso, se você também estiver usando o Docker Compose, use um arquivo docker-compose.yml
, que especifica uma imagem a ser usada e opções de configuração adicionais. Se você não estiver usando o Docker Compose com seus ambientes Docker, use um arquivo Dockerrun.aws.json
em vez disso.
Tópicos
- Pré-requisitos
- Colocar uma aplicação do Elastic Beanstalk em contêineres
- Testar um contêiner localmente
- Implantar um contêiner com um Dockerfile
- Testar uma imagem de Docker remota
- Implantar uma imagem do Docker remota no Elastic Beanstalk
- Limpar
- Executar localmente um ambiente do Docker com a EB CLI
- Configuração do Docker
Pré-requisitos
Este tutorial pressupõe que você tenha algum conhecimento das operações básicas do Elastic Beanstalk, da Elastic Beanstalk Command Line Interface (EB CLI) e do Docker. Caso ainda não tenha, siga as instruções em Conceitos básicos do Elastic Beanstalk para iniciar seu primeiro ambiente do Elastic Beanstalk. Este tutorial usa a EB CLI, mas também é possível criar ambientes e fazer upload de aplicações usando o console do Elastic Beanstalk.
Para concluir este tutorial, você precisará fazer o seguinte:
-
Uma instalação local de trabalho do Docker. Para obter mais informações, consulte Obter o Docker
no site de documentação do Docker. -
Acesso ao Docker Hub. Você precisará criar um ID do Docker para acessar o Docker Hub. Para obter mais informações, consulte Compartilhar a aplicação
no site de documentação do Docker.
Para saber mais sobre como configurar ambientes do Docker em plataformas do Elastic Beanstalk, consulte Configuração do Docker neste mesmo capítulo.
Colocar uma aplicação do Elastic Beanstalk em contêineres
Para este exemplo, criamos uma imagem do Docker da aplicação demonstrativa Flask a partir do Implantar uma aplicação Flask no Elastic Beanstalk. O aplicativo consiste em um arquivo principal, application.py
. Também precisa de um Dockerfile
. Coloque os dois arquivos na raiz de um diretório.
~/eb-docker-flask/
|-- Dockerfile
|-- application.py
exemplo ~/eb-docker-flask/application.py
from flask import Flask # Print a nice greeting def say_hello(username = "World"): return '<p>Hello %s!</p>\n' % username # Some bits of text for the page header_text = ''' <html>\n<head> <title>EB Flask Test</title> </head>\n<body>''' instructions = ''' <p><em>Hint</em>: This is a RESTful web service! Append a username to the URL (for example: <code>/Thelonious</code>) to say hello to someone specific.</p>\n''' home_link = '<p><a href="/">Back</a></p>\n' footer_text = '</body>\n</html>' # Elastic Beanstalk looks for an 'application' that is callable by default application = Flask(__name__) # Add a rule for the index page application.add_url_rule('/', 'index', (lambda: header_text + say_hello() + instructions + footer_text)) # Add a rule when the page is accessed with a name appended to the site # URL application.add_url_rule('/<username>', 'hello', (lambda username: header_text + say_hello(username) + home_link + footer_text)) # Run the application if __name__ == "__main__": # Setting debug to True enables debug output. This line should be # removed before deploying a production application. application.debug = True application.run(host="0.0.0.0")
exemplo ~/eb-docker-flask/Dockerfile
FROM python:3.6 COPY . /app WORKDIR /app RUN pip install Flask==1.0.2 EXPOSE 5000 CMD ["python", "application.py"]
Testar um contêiner localmente
Use a CLI do Elastic Beanstalk (CLI do EB) para configurar seu repositório local para implantação no Elastic Beanstalk. Defina o Dockerfile
do seu aplicativo na raiz do diretório.
~/eb-docker-flask$
eb init -p docker
application-name
(Opcional) Use o comando eb local run para criar e executar seu contêiner localmente.
~/eb-docker-flask$
eb local run --port 5000
nota
Para saber mais sobre o comando eb local, consulte eb local. O comando não é compatível no Windows. Como alternativa, você pode criar e executar seu contêiner com os comandos docker build e docker run. Para obter mais informações, consulte a Documentação do Docker
(Opcional) Embora o contêiner esteja em execução, use o comando eb local open para visualizar o aplicativo em um navegador da web. Opcionalmente, abra http://localhost:5000/
~/eb-docker-flask$
eb local open
Implantar um contêiner com um Dockerfile
Depois de testar a aplicação localmente, implante-a em um ambiente do Elastic Beanstalk. O Elastic Beanstalk usa as instruções em seu Dockerfile
para criar e executar a imagem.
Use o comando eb create para criar um ambiente e implante seu aplicativo.
~/eb-docker-flask$
eb create
environment-name
Depois que o ambiente for iniciado, use o comando eb open para visualizá-lo em um navegador da web.
~/eb-docker-flask$
eb open
Testar uma imagem de Docker remota
Em seguida, criamos uma imagem de Docker do aplicativo Flask da seção anterior e a enviamos para o Docker Hub.
Observações
As etapas a seguir criam uma imagem do Docker disponível publicamente.
Você usará comandos do Docker da instalação local do Docker, juntamente com as credenciais do Docker Hub. Para obter mais informações, consulte a seção Pré-requisitos anterior.
Depois de criarmos e enviarmos nossa imagem, poderemos implantá-la no Elastic Beanstalk com um arquivo docker-compose.yml
, se você estiver usando o Docker Compose com o ambiente Docker. Se você não estiver usando o Docker Compose com seus ambientes Docker, use um arquivo Dockerrun.aws.json
em vez disso. Para criar uma imagem de Docker do aplicativo Flask e a enviar para o Docker Hub, execute os comandos a seguir. Estamos usando o mesmo diretório do exemplo anterior, mas você poderá usar qualquer diretório com o código do seu aplicativo. Insira seu ID do Docker para docker-id
para iniciar sessão no Docker Hub.
~/eb-docker-flask$
docker build -t
~/eb-docker-flask$docker-id
/beanstalk-flask:latest .docker push
docker-id
/beanstalk-flask:latest
nota
Antes de enviar sua imagem, talvez seja necessário executar docker login. Suas credenciais do Docker Hub serão solicitadas se você executar o comando sem parâmetros.
Se você estiver usando a ferramenta Docker Compose para gerenciar seu ambiente do Docker, agora poderá implantar a aplicação usando apenas um arquivo docker-compose.yml
. Para saber mais sobre os arquivos docker-compose.yml
, consulte Configuração do Docker.
Se você não estiver usando o Docker Compose, use um arquivo Dockerrun.aws.json
. Para obter mais informações, consulte Implantar usando o Dockerrun.aws.json v1 (sem o Docker Compose).
Faça um novo diretório e crie um arquivo docker-compose.yml
.
exemplo ~/remote-docker/docker-compose.yml
version: '3.8' services: beanstalk-flask: image: "
username
/beanstalk-flask" ports: - "80:5000"
Se você não estiver usando a ferramenta Docker Compose para gerenciar seu ambiente do Docker, agora poderá implantar a aplicação usando apenas um arquivo Dockerrun.aws.json
. Para saber mais sobre os arquivos Dockerrun.aws.json
, consulte Configuração para plataformas Docker (sem Docker Compose) .
Faça um novo diretório e crie um arquivo Dockerrun.aws.json
.
exemplo ~/remote-docker/Dockerrun.aws.json
{ "AWSEBDockerrunVersion": "1", "Image": { "Name": "
username
/beanstalk-flask", "Update": "true" }, "Ports": [ { "ContainerPort": "5000" } ] }
Use a CLI do EB para configurar o repositório local para implantação no Elastic Beanstalk.
~/remote-docker$
eb init -p docker
application-name
(Opcional) Use eb local run para compilar e executar seu contêiner localmente. Para saber mais sobre o comando eb local, consulte eb local.
~/remote-docker$
eb local run --port 5000
(Opcional) Embora o contêiner esteja em execução, use o comando eb local open para visualizar o aplicativo em um navegador da web. Opcionalmente, abra http://localhost:5000/
~/remote-docker$
eb local open
Implantar uma imagem do Docker remota no Elastic Beanstalk
Depois de testar o contêiner localmente, implante-o em um ambiente do Elastic Beanstalk. O Elastic Beanstalk usa o arquivo docker-compose.yml
para extrair e executar sua imagem se você estiver usando o Docker Compose. Caso contrário, o Elastic Beanstalk usa o Dockerrun.aws.json
em vez disso.
Use a EB CLI para criar um ambiente e implante sua imagem.
~/remote-docker$
eb create
environment-name
Assim que seu ambiente for ativado, use eb open para visualizá-lo em um navegador da Web.
~/remote-docker$
eb open
Limpar
Ao terminar de trabalhar com o Elastic Beanstalk, você pode encerrar o ambiente. O Elastic Beanstalk termina todos os recursos da AWS associados ao seu ambiente, como instâncias do Amazon EC2, instâncias de banco de dados, balanceadores de carga, grupos de segurança e alarmes.
Como encerrar o ambiente do Elastic Beanstalk
Abra o console do Elastic Beanstalk
e, na lista Regions (Regiões), selecione a sua Região da AWS. -
No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.
nota
Se você tiver muitos ambientes, use a barra de pesquisa para filtrar a lista de ambientes.
-
Escolha Actions (Ações) e depois Terminate Environment (Encerrar ambiente).
-
Use a caixa de diálogo na tela para confirmar o encerramento do ambiente.
Com o Elastic Beanstalk, é possível criar facilmente um ambiente para a aplicação a qualquer momento.
ou com a EB CLI:
~/remote-docker$ eb terminate environment-name