alagoas dev day
TRANSCRIPT
Quem sou eu
• Marcio Trindade (@marciotrindade);
• Formado em Ed. Física;
• Trabalho com desenvolvimento desde 2004;
• Blog: marciotrindade.com;
• Trabalho com Ruby desde 2008;
Agora está assimWebServicenginx + ssl + assets
Banco de Dadospostgresql + pgv8 + v8
FilaRedis
WorkersRuby + sidekiq
Web appRuby + rails
APIGolang
CacheMemcached
Por que Container
• Conseguir isolar cada parte da sua aplicação;
• Tudo o que cada parte precisa está lá;
• Ter o ambiente mais próximo ao de produção;
• Simplificar o desenvolvimento;
• Simplificar o deploy;
O que é Docker?
• Uma plataforma open-source para gerenciar
containers;
• Escrito pela equipe do Docker, Inc.;
• Sob a licença Apache 2.0;
Client and server
• Já vem com um client (cli);
• Conversa com o servidor ou daemon;
• Possui uma api RESTfull completa;
• Pode estar ou não na mesma maquina;
Docker images• Forma do docker construir containers;
• É a criação do ambiente a partir do file system com instruções do tipo: Add a fileRun a comand
• Podemos considerar imagens como o código fonte dos containers.
Registries
• Um repositório de imagens;
• Pode ser público ou privado;
• Docker Hub (público);
• Possui milhares de imagens prontas;
Containers
• Criado a partir de uma imagem;
• Contém a sua app ou serviço;
• É a camada de execução;
• Pode rodar um ou mais processos;
Dockerfile• FROM - A imagem pra utilizar
FROM ubuntu:14.04
• RUN - Executar comandos necessários pra preparar o sistema RUN apt-get install -y package-foo && apt-get install -y package-bar
• CMD - Comando que seu container deve rodar CMD ["rake", "db:migrate"]
• EXPOSE - Expor a porta que o serviço vai escutar EXPOSE 80
• ENV - Criar variaveis de ambiente ENV RAILS_ENV production
• COPY or ADD - Copiar um conteúdo pra dentro do container COPY Gemfile /myapp/Gemfile
• VOLUME - Expor uma area de de arquivos mutaveis VOLUME . /my_app
• WORKDIR - Qual o path de trabalho da sua aplicação WORKDIR /my_app
Docker Compose• Antigo "fig";
• Cria e gerencia containers docker;
• Define multi-containers em um único arquivo;
• Cria link entre os containers;
• Sobe suas aplicações com um único comando;
Referências• The Docker Book - James Turnbull
• https://www.docker.com/
• https://docs.docker.com/compose/
• https://www.youtube.com/watch?v=ZzQfxoMFH0U
• http://www.rightscale.com/blog/cloud-management-best-practices/docker-vs-vms-combining-both-cloud-portability-nirvana