Skip to content

Deploy via AWS

Jessé Diego edited this page Sep 14, 2022 · 9 revisions

Este projeto usa AWS Elastic Beanstalk para gerenciar as aplicações.

É recomendado usar o EB CLI para realização de deploys.

É necessário que o administrador (danielfireman) adicione crie uma conta na AWS e adicione ao grupo IAM de desenvolvedores.

1 Instalando o EB CLI

Siga os passos no tutotial oficial para a instalação do EB CLI: https://github.com/aws/aws-elastic-beanstalk-cli-setup

2 Configurando EB CLI

eb init Siga as instruções indicando:

  • região: us-east-1
  • suas credenciais AWS (access-id e access-key)
  • aplicação: dadosjusbr-prod
  • usando Docker
  • Não precisa crir pares de chaves SSH agora

Caso exista algo errado, você deve remover o diretório .elasticbeanstalk e executar eb init novamente.

Para verificar se está tudo certo, rodar eb list e ele deve listar os dois ambientes da aplicação dadosjusbr-prod:

  • dadosjusbr-api
  • dadosjusbr-site

O comando eb list marca com um asterisco o ambiente corrente. Caso precise mudar, basta usar eb use {AMBIENTE}.

3 Rodando Localmente

Primeiramente, você deve subir a API do dadosjusbr localmente. Instruções aqui.

Você vai precisar do arquivo .env na raiz do repositório. Ele uma versão modificada das variáveis de ambiente de produção, as quais podem ser obtidas com:

eb printenv

Substitua o api.dadosjusbr.org por {endereço IP}:8081, que é o endereço local da API dadosjusbr.

Para obter o IP local use o comando:

hostname -I | cut -d" " -f1

Além do arquivo .env, você vai precisar da variável de ambiente PORT configurada. Para tal, você deve executar:

eb local setenv PORT=8080

Com isso, você pode executar o site localmente na porta 8080 através do seguinte comando:

eb local run

Problemas conhecidos

Permission denied

eb local run Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=node&tag=lts-alpine": dial unix /var/run/docker.sock: connect: permission denied

$ sudo groupadd docker
$ sudo usermod -aG docker $USER

Reinicie a máquina

Após a reinicialização, verifique se consegue iniciar o docker:

$ docker run hello-world

Você pode encontrar mais informações aqui: https://stackoverflow.com/questions/48957195/how-to-fix-docker-got-permission-denied-issue

No space left on device

docker system prune

ou, para remover tudo mesmo:

docker system prune --all --force

4 Realizando o Deploy

O EBS tem algumas características importantes:

  • Ele usa o comando git archive para realizar o empacotamento do artefato (zip bundle) que vai para produção, ou seja, nada que está no .gitignore ou que não está comitado entra no artefato
  • Ele gera um arquivo .env com as propriedades de ambiente configuradas e coloca na raiz do projeto (nós fazemos uso disso no docker-compose.yaml)

Dito isso, para realizar o deploy, basta executar:

eb deploy

Para o site, a implantação demorará em torno de 4 minutos.

Comandos Importantes

Transformando um .env em variáveis de ambiente do EBS

eb local setenv `cat .env | sed '/^#/ d' | sed '/^$/ d'`