Setup para desenvolvimento com Docker


#1

Olá a todos :slight_smile:
O Openredu está agora, na sua ultima versão ‘instável’ (no caso, o branch master no github) já pronto para rodar em Containers Docker. Como isso muda a forma como a configuração para um ambiente de desenvolvimento é feita, fiz esse tutorial para quem estiver desenvolvendo a partir da última versão :wink:

#Tutorial de Instalação Openredu – Latest

O tutorial a seguir foi feito em um sistema Linux 18.04 LTS, assim que foi instalado.
A versão de desenvolvimento atualmente conta com o uso da plataforma Docker.

#Passos:
1. Instalando Docker
2. Instalando Docker-Compose
3. Clonando o repositório ou o seu fork
4. [OPCIONAL] Clonando os repositorios vis e livredoc
5. Construindo o Container Openredu
6. Subindo o Container Openredu
7. Acessando!

#1. Instalando o Docker

Pra que serve o Docker?
O docker é uma plataforma de software que permite a criação, o teste e a implantação de aplicações rapidamente. O docker cria pacotes de software em unidades padronizadas chamadas de contêineres que têm tudo o que o software precisa para ser executado, inclusive bibliotecas, ferramentas de sistema, código e runtime. Ao usar o docker, é possível implantar e escalar rapidamente aplicações em qualquer ambiente e ter a certeza de que o seu código será executado.
Fonte: Amazon AWS

Em resumo, podemos ver o Docker como uma espécie de máquina virtual, só que muito mais leve, pois ela não precisa instalar o sistema operacional todo, funcionando em cima do sistema operacional host para obter estruturas essenciais como kernel, mas por si, é um sistema encapsulado independente.

Para instalar, execute no seu terminal:

 $ sudo apt-get install docker

#2. Instalando o Docker Compose
Pra quê serve o Docker-Compose?
O Docker Compose é uma ferramenta para a criação e execução de múltiplos containers de aplicação. Com o Compose, você usar um arquivo do tipo yaml para definir como será o ambiente de sua aplicação e usando um único comando você criará e iniciará todos os serviços definidos.

Compose é ótimo para desenvolvimento, testes e homologação, bem como para melhorar o fluxo de integração continua.
Fonte: Mundo Docker

Execute no seu terminal:

$ sudo apt-get install docker-compose

#3. Clonando o repositório ou o seu fork

Agora, precisamos clonar o repositório do Openredu que desejamos trabalhar. No caso, estou clonando o branch master do repositório oficial, que já está com docker implementado. Você pode clonar um fork que tenha feito a partir do repositório principal, contanto que já esteja com docker:

Para clonar, vá até o diretório que deseja armazenar os arquivos do repositório e digite no seu terminal:

$ git clone https://github.com/Openredu/Openredu

#4.[OPCIONAL] Clonando os repositorios vis e livredoc

Caso esteja desenvolvendo também nas APIs externas ‘Vis’ ou ‘Livredoc’, será necessário realizar um clone de seus repositórios e alternar para o branch do docker. Se não desejar, apenas lembre-se de alterar seu arquivo .env para apontar para os endereços dessas APIs, como seguem:

VIS: ‘vis.openredu.org’
LIVREDOC: ‘livredoc.openredu.org’

Não é obrigatório que os dois sejam clonados . Pode-se clonar apenas o repositório VIS e desenvolver nele (alterando a variável de ambinete para o localhost apropriado, mais detalhes no último passo do guia), enquanto o LIVREDOC usado será o do endereço acima.

Para isso, estando no diretório desejado, digite no seu terminal:

$ git clone https://github.com/Openredu/vis
$ git clone https://github.com/Openredu/livredoc
$ cd vis
$ git checkout deploy-docker
$ cd ..
$ cd livredoc
$ git checkout deploy-docker
$ cd ..

O que fizemos acima foi clonar os dois repositórios, entrar em cada um deles e alterar a branch atual de “master” para “deploy-docker”, que é onde temos a aplicação “dockerizada”.

#5. Construindo o Container Openredu

Agora, vamos configurar a aplicação para rodar localmente para que possamos desenvolver e também testar:

No seu terminal:

$ cd Openredu
$ sudo docker-compose build

Agora espere o processo de download de todas as dependências do container. Nada será instalado na sua máquina, apenas dentro do container.

Agora execute:

$ sudo docker-compose run --rm app bundle exec rake db:setup

Esse comando cuidará de subir temporariamente os containers que construímos, executar “rake db:setup” para criar todas databases e rodar todos os migrates em development e em test, e depois, como fornecemos a flag --rm, os containers serão removidos.

OBS: Pode ser que a database de testes não seja criada com esse comando. Se não for, rode em seguida:

$ sudo docker-compose run --rm app bundle exec rake db:setup RAILS_ENV=test

#6. Subindo o Container Openredu

Finalmente, no seu terminal digite:

$ sudo docker-compose up

O docker-compose se encarregará de criar as networks e volumes necessários. As networks servem para que os containeres do banco e do Openredu comuniquem-se entre si. Os volumes servem para mapear uma seção da maquina host no container. Isso significa que podemos alterar o código do openredu normalmente enquantooooo desenvolvemos, sem a necessidade de subir o container a todo momento para ver as modificações. As mudanças feitas no código do Openredu na máquina local são automaticamente refletidas no container.

[OPCIONAL]
Caso tenha optado por desenvolver também VIS e/ou LIVREDOC, não esqueça de executar, no diretório clonado de cada um:

$ sudo docker-compose build

Para livredoc, em seguida, execute:

$ sudo docker-compose run --rm livredoc bundle exec rake db:setup

Para vis, execute:

$ sudo docker-compose run --rm vis bundle exec rake db:setup

E por fim, para cada um deles, execute:

$ sudo docker-compose up

#7. Acessando
Por último vamos conferir se as páginas estão funcionando corretamente. Para isso, acesse pelo seu navegador:

Openredu:

localhost:3000

Livredoc:

localhost:4000

Vis:

localhost 4002

Se tudo estiver ok, devemos ver a tela de login do Openredu, e duas páginas dizendo “You’re on Rails”, pois por serem APIs não necessitam de homepage, ficando então com a página padrão do Rails.

Por enquanto é isso, se tiverem algum problema durante a instalação, ou alguma sugestão para o guia, basta me comunicar, atualizarei o mais rápido possível :slight_smile:

Regards,
~hscs


Tutorial de instalação atualizado
#2

Testei aqui, rodou tudo! :slight_smile:


#3

Para quem tem outro sistema operacional, acredito que não funcionará pelos comandos linux no docker.

Tentei usar no MACOS e não funcionou.

acredito que usar o vagrant seria mais adequado nesta situação.