Dominando o Docker!

 

Introdução
O Docker é um plataforma (aberta) que permite que você crie, rode e faça deploy de containers. De maneira simples, um container é o empacotamento da sua aplicação mais as dependências dela.

Por exemplo, se você quiser utilizar um Container que possua todas as dependências do Ruby On Rails já instalados sem que você instale essas dependências diretamente na sua máquina, você pode fazer isso com poucos comandos de maneira completamente isolada do seu sistema.
Você também pode criar suas próprias imagens personalizadas para gerar seus containers e depois distribuí-las para os outros programadores da sua equipe poderem trabalhar em um ambiente idêntico ao seu, ou seja, em poucos minutos a máquina de qualquer desenvolvedor novo da sua equipe vai estar preparada pra ele começar a trabalhar.
Porque Docker?
A primeira resposta que vem a minha mente é simples, porque você merece ser feliz. Seu tempo é valioso e você não vai querer gastar ainda mais horas do que já gastou na vida configurando máquinas iguais sempre que muda de ambiente de desenvolvimento ou servidor. O Docker vai te ajudar a automatizar e ainda mais, a melhorar todo esse processo e evitar o velho e bom “Na minha máquina estava funcionando, não sei o que houve”.
O que vamos Aprender?
  1. Como gerenciar nossos containers usando o Docker (3 exemplos)
  2. Como dockerizar um Projeto Rails usando Docker-Compose

Também vamos ver uma lista com os comandos mais usados do Docker e do Docker Compose para facilitar sua vida 🙂

Links falados no Screencast:
  1. Como instalar o Docker: https://docs.docker.com/engine/installation/
  2. Como instalar o Docker Compose https://docs.docker.com/compose/
  3. Docker Hub https://hub.docker.com/
  4. Documentação do Docker https://docs.docker.com/
Ingredientes:
  1. Docker
  2. Docker Compose
  3. Ruby On Rails
  4. PostgreSQL
PARTE 1 – Criando um container com o Ubuntu

Nesta parte do Screencast nós criamos um container com o Ubuntu dentro onde nós tivemos acesso ao terminal dele, é um bom exemplo para você começar a entender como os ambientes são isolados.

 

  1. Para gerar o seu container através da imagem padrão do ubuntu, rode:

    docker rails
  2. Para verificar que o container esta no ar, em outro console rode:
  3. Para parar o seu container, pegue o Id do seu container que apareceu depois do comando anterior e rode o seguinte comando:
  4. Agora que seu container está parado, você pode rodar o seguinte comando para listá-lo (junto com todos os outros parados):
  5. Para que seu container parado volte a rodar, pegue novamente o id dele e rode o seguinte comando:
  6. Para que você possa voltar a ver o bash do seu container ou rodar outro comando, pegue novamente o id e rode:
  7. Agora para finalizar para novamente seu container rodando:
  8. E apague ele (se você não for usar seu container é uma boa prática que você apague ele para liberar memória), rode:

 

PARTE 2 – Criando e subindo um Projeto Rails via Docker

Aqui vimos no Screencast como criar um projeto Rails sem ter o rails instalado na nossa máquina (usando um container que possui o Rails), como criar um Dockerfile para gerar uma imagem personalizada e como subir nosso serviço Rails via Container.

  1. Crie seu projeto Rails rodando:
  2. Agora entre no diretório via console e crie um file chama “Dockerfile” e substitua o conteúdo dele por:
  3. Agora que criamos nosso Dockerfile podemos fazer o Build da nossa imagem (Construir nossa imagem personalizada), dentro da pasta do seu projeto rode:
  4. Depois disso podemos pegar a imagem que geramos e criar nosso container para subir nossa aplicação, no seu console rode:

    *Mais detalhes sobre os comandos no Screencast
  5. Pronto \o/, agora acesse no seu Browser http://localhost:3000
    Usando Docker

 

PARTE 3 – Criando e subindo um Projeto Rails via Docker + PostgreSQL + Network

Novamente nesta parte nós subimos um servidor Rails, porém dessa vez vamos usar também um container com o PostgreSQL (Banco de Dados) e vamos usar um network do docker para ligar tudo isto 🙂

  1. Crie seu projeto Rails rodando:
  2. Agora entre no diretório via console e crie um file chamado “Dockerfile” e substitua o conteúdo dele por:
  3. Agora que criamos nosso Dockerfile podemos fazer o Build da nossa imagem (Construir nossa imagem personalizada), dentro da pasta do seu projeto rode:
  4. Nós precisamos criar agora uma network (uma rede interna do docker que vai conectar nossos containers para que um possa acessar o outro livremente), no seu console rode:
  5. Agora vamos subir um container com o PostgreSQL dentro, rode:
  6. Para que o nosso APP Rails se conecte ao PostgreSQL disponível nós precisamos editar o arquivo ‘/config/database.yml’, do nosso projeto, neste arquivo substitua o conteúdo por:
  7. Agora nós precisamos criar o banco de dados, rode:
  8. E subir nosso servidor:

    docker postgresql
PARTE 4 – Usando o Docker Compose para organizar nossos containers

Agora sim entramos no modo de uso do Docker que eu acho mais útil, via docker compose. O Docker Compose é uma ferramenta para orquestrar todos os nossos containers (Vai nos ajudar a subir eles juntos, vai gerar uma network e vai nos permitir gerenciar melhor nossos volumes).

  1. No mesmo projeto que trabalhamos na Parte 3 (Apenas para reaproveitar o trabalho) vamos criar um arquivo chamado “docker-compose.yml” e ele vai gerenciar nossos containers para gente. Crie o arquivo e coloque o seguinte conteúdo dentro dele:

    * Explicações sobre esse arquivo no Screencast
  2. Para fazer o Build de todos os nossos containers basta rodar (dentro do projeto):
  3. Agora como nós criamos um novo container para o PostgreSQL nós precisamos criar nosso banco de dados de novo, porém agora vamos usar os comandos do docker-compose para fazer isso de maneira fácil. No console rode:
  4. Para subir nossos containers, rode no console:

    Captura de tela de 2017-01-17 12-52-29
Comandos do Docker (Lista de comandos úteis)
  1. Gera um container e roda um comando dentro:
  2. Visualiza os containers rodando:
  3. Visualizando todos os containers:
  4. Parando um container:
  5. Parando TODOS os containers que estão rodando:
  6. Dando um start em um container parado:
  7. Apagando um container:
  8. Apagando TODOS os containers:
  9. Executando um comando dentro de um container que já está rodando:
  10. Vendo as imagens que você tem instaladas:
  11. Apagando uma imagem:
  12. Fazendo o Build das imagens usando o Docker Compose:
  13. Criando e subindo os containers via Docker Compose:
  14. Parando os containers via Docker Compose:
  15. Executando um comando dentro de um container via Docker Compose:
  16. Vendo a sua configuração do Docker Compose:
  17. Vendo os logs dos containers via Docker Compose:
  18. Matando os containers via Docker Compose:
  19. Escalando seus containers (Aumentando a quantidade de containers para o mesmo service) via Docker Compose:
  20. Parando e removendo containers usando Docker Compose:
  21. Startando os containers:

 

Se você quiser conhecer mais comandos do Docker clique aqui, do Docker Compose clique aqui.

Alguns Recados 🙂
Esta semana, eu criei uma campanha no Apoia.se para as pessoas que gostam do Blog e querem mantê-lo crescendo e produzindo cada vez mais. 🙂
Também coloquei algumas recompensas baseados nas metas da campanha, a primeira é uma Live por mês com conteúdos sobre programação escolhidos via votação e a segunda é um Hackaton Online com premiação de R$1.000,00 para o vencedor todo mês.
O One Bit Code vai crescer cada vez mais para levar conhecimento especializado para vocês e eu acredito que a Live e o Hackaton serão maneiras ainda mais interativas de evoluirmos juntos.banner-post-apoiase

Então se você quiser ajudar o Blog a alcançar seu potencial máximo, dá uma força pra gente no link: https://apoia.se/onebitcode

Reveja o Screencast anterior: Dominando o Atom [12 pacotes Incríveis!] e aproveite para se inscrever em nossa newsletter do lado direito do blog em “se inscreva” e receba o Resumo Semanal One Bit Code 🙂

Conclusão

Neste Screncast nós falamos sobre o Workflow do Docker e também sobre o Docker Compose, se você não viu o vídeo, apenas viu o texto, eu recomendo que você assista ao vídeo, lá tem muito mais informações 🙂

Se você ainda não se inscreveu no canal se inscreve que em breve teremos mais vídeos. E aproveita e dá um like lá nesse vídeo \o/

Se você ficou com alguma dúvida comenta aí em baixo ou me adicione no Facebook clicando aqui.

Muito Obrigado por acompanhar este Blog!
Sua presença aqui é uma honra para mim,

Abraços,
Leonardo Scorza.

Feito com s2 por OneBitCode
%d blogueiros gostam disto: