Objetivo:
Criar um container em uma máquina EC2 com uma aplicação web simples.
Pré-requisitos:
Ter uma instância EC2 Amazon Linux com acesso à internet e IP público e acesso SSH a esta instância.
Instalação do Docker
Logado na instância EC2 execute o comando abaixo. O comando atualiza todos os pacotes e suas dependências. O parâmetro -y responde sim para todas as perguntas na execução do programa.
sudo yum update -y
Para a instalação do Docker execute o seguinte comando.
sudo amazon-linux-extras install docker
Execute o seguinte comando para iniciar o Docker.
sudo service docker start
Execute os comandos abaixo. Uma resposta do client e do server garantem que o Docker está funcionando como deveria.
docker info
docker version
Para um guia completo de instalação do Docker consulte:
Iniciando um container
Para iniciar um container de teste do Docker recém-instalado execute o comando
sudo docker run -d --rm -p 80:80 arquitetocloud/node-exemplo-1
O comando abaixo verifica que o container está em execução.
sudo docker ps
Adicionando regra ao Security Group
Para que a aplicação no container possa responder solicitações na porta 80 é preciso fazer a liberação no Security Group associado a instância EC2.
Crie uma regra que libere a porta 80 (HTTP). Na imagem a seguir a regra foi criada para liberar a porta 80 para um IP específico, mas a liberação pode ser feita para qualquer endereço IP ou até mesmo para todos os IPs (0.0.0.0/0).
Para testar o app abra um browser e acesso o endereço público da instância EC2.
Este método de fazer deploy de uma aplicação conteneirizada foi usado somente para ilustrar o processo simples de instalação e configuração do Docker, entretanto, fazer o deploy em instâncias EC2 de forma isolada não é considerado adequado para ambientes do mundo real, pois trás com ele algumas desvantagens, como ter que administrar a instância EC2, patches de atualização, segurança, sizing da instância etc.
Serviços como ECS permitem focar somente na aplicação que precisa sofrer deploy, deixando todas as tarefas de administração das instâncias EC2 sob um serviço gerenciado pela AWS. Sobre ECS iremos falar em um próximo post.
It’s done!