SlideShare uma empresa Scribd logo
DOCKER COMPOSE
MICHAEL GRANADOS
2017-03-13
MICHAEL
GRANADOS
DESENVOLVEDOR WEB
DEVOPS GUY
NERD
PAI DE FAMÍLIA
Agenda
Docker é fantástico!

Mas no mundo real

As coisas começam a complicar…

Como fazer nossa vida ficar mais simples?

Colocando tudo junto!

Fácil, simples, prático
Docker é fantástico!
É possível criar ambientes
para desenvolvimento /
testes / produção

Compartilha recursos
deixando os processos mais
rápidos

É simples de usar

Faz uso de cache para
reutilizar partes de
contêineres
Mas no mundo real
Um ambiente completo em produção precisa

aplicação web

banco de dados

banco de cache

filas de processamento

processos em segundo plano

etc, etc, etc
As coisas começam a
complicar…
$ cat Dockerfile
FROM ruby:2.3.3
RUN apt-get update && 
apt-get install -y 
nodejs mysql-client
COPY Gemfile* ./
RUN gem install bundler && bundle install
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
COPY . .
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]
As coisas começam a
complicar…
$ docker pull mysql:latest
$ docker build -t web .
$ docker run -d --name=db 
-e MYSQL_ALLOW_EMPTY_PASSWORD=true 
mysql:latest
$ docker run -d --name=web 
--link db:db 
-p 3000:3000 
--e RAILS_ENV=development 
-v "${PWD}:/usr/src/app"
As coisas começam a
complicar…
$ docker pull ...
$ docker pull ...
$ docker build ...
$ docker build ...
$ docker run ...
$ docker run ...
$ docker run ...
$ docker run ...
Como fazer nossa vida
ficar mais simples?
docker-compose.yml
docker-compose up
Colocando tudo junto!
Mesmo Dockerfile

Dockerfile

Um arquivo de configuração de ambientes

docker-compose.yml
Colocando tudo junto!
$ cat Dockerfile
FROM ruby:2.3.3
RUN apt-get update && 
apt-get install -y 
nodejs mysql-client
COPY Gemfile* ./
RUN gem install bundler && bundle install
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
COPY . .
EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]
Colocando tudo junto!
$ cat docker-compose
version: "2"
services:
web:
build: .
command: rails server -b 0.0.0.0
volumes: [".:/usr/src/app"]
links: ["db:db"]
ports: ["3000:3000"]
environment:
RAILS_ENV: development
db:
image: mysql
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "true"
docker-compose up
e pronto!
Fácil, simples e prático
docker-compose build

docker-compose up

docker-compose ps

docker-compose exec

docker-compose start/stop/restart

docker-compose rm

docker-compose logs

docker-compose top
“A arte de programar consiste em organizar e
dominar a complexidade.”
–Johnny Appleseed

Mais conteúdo relacionado

PDF
Docker - minicurso utfpr 2017
PPTX
Ambiente de desenvolvimento com docker e ruby on rails
PPTX
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
PDF
Oficina docker
PPTX
Docker - Básico
PDF
São paulo docker meetup #2
PDF
Apresentação Docker
Docker - minicurso utfpr 2017
Ambiente de desenvolvimento com docker e ruby on rails
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Ab...
Oficina docker
Docker - Básico
São paulo docker meetup #2
Apresentação Docker

Mais procurados (20)

ODP
O que é Docker?
PDF
Docker: uma visão geral
ODP
Docker: uma visão geral e exemplos de uso
PDF
Apresentacao docker
PPTX
Introdução a Containers Docker
PDF
O que é docker?
PPTX
Introdução ao docker
PDF
Freedomday2016 - Fique na caixinha, docker
PDF
Apresentação docker
PDF
Introdução à plataforma Docker
PDF
Docker, facilitando a vida do desenvolvimento
PDF
Treinamento Docker Básico
PDF
Bem vindo ao Docker
PDF
Verdades que não querem te contar sobre Docker
PDF
Olá docker
PDF
Desenvolvendo com PHP e Docker
PDF
Vagrant & Docker: carregue seus ambientes no bolso
PDF
GIT Básico
PDF
O poder do Docker (7 Masters)
PPTX
Docker e suas tecnologias por @cesarnog
O que é Docker?
Docker: uma visão geral
Docker: uma visão geral e exemplos de uso
Apresentacao docker
Introdução a Containers Docker
O que é docker?
Introdução ao docker
Freedomday2016 - Fique na caixinha, docker
Apresentação docker
Introdução à plataforma Docker
Docker, facilitando a vida do desenvolvimento
Treinamento Docker Básico
Bem vindo ao Docker
Verdades que não querem te contar sobre Docker
Olá docker
Desenvolvendo com PHP e Docker
Vagrant & Docker: carregue seus ambientes no bolso
GIT Básico
O poder do Docker (7 Masters)
Docker e suas tecnologias por @cesarnog
Anúncio

Semelhante a Docker compose (20)

PDF
Docker do básico a orquestração (PHPeste2016)
PPTX
Conheça o Docker
PDF
Beers & Bytes - O Futuro da virtualização
PPTX
Orchestrando na linha
PPTX
Docker Para Maiores - GDG Cabreúva
PDF
Conceitos Basicos e Docker - Java Noroeste
PPTX
Docker para maiores
PDF
Usp codelabs (docker)
PPTX
Dockerizando a vida - 8º Meetup - PHP Pernambuco
PPTX
Docker Everywhere - MTAC Week
PDF
Escalando o ambiente de desenvolvimento com cli em ruby
PDF
Dockerizando aplicações em uma Fintech
PPTX
Desenvolvendo para WordPress com Docker, Git e WP-CLI
PDF
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
PDF
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
PDF
Construindo um data warehouse com Pentaho e Docker
PPTX
Usando Docker no desenvolvimento .NET
PDF
O docker vai mudar tudo na sua infra estrutura-ti
PDF
PDF
HOST079 - Docker
Docker do básico a orquestração (PHPeste2016)
Conheça o Docker
Beers & Bytes - O Futuro da virtualização
Orchestrando na linha
Docker Para Maiores - GDG Cabreúva
Conceitos Basicos e Docker - Java Noroeste
Docker para maiores
Usp codelabs (docker)
Dockerizando a vida - 8º Meetup - PHP Pernambuco
Docker Everywhere - MTAC Week
Escalando o ambiente de desenvolvimento com cli em ruby
Dockerizando aplicações em uma Fintech
Desenvolvendo para WordPress com Docker, Git e WP-CLI
Desenvolvimento em .NET utilizando Docker - Meetup 8 Itu Developers
PHP Experience 2016 - [Palestra] Vagrant, LXC, Docker, etc: Entenda as difere...
Construindo um data warehouse com Pentaho e Docker
Usando Docker no desenvolvimento .NET
O docker vai mudar tudo na sua infra estrutura-ti
HOST079 - Docker
Anúncio

Mais de Michael Castillo Granados (8)

PDF
Código legado - PHP Conference Brasil - 2014
PDF
Design patterns de uma vez por todas
PDF
Design patterns: resolvendo problemas comuns (ruby)
PDF
Transformando o wp em uma loja virtual
PDF
Ecommerce, mais simples do que parece
ODP
Da argila ao forte: como desenvolver uma loja com PagSeguro
PDF
Da Argila Ao Forte - Como desenvolver uma loja virtual
ODP
Ganhando tempo com casos de testes
Código legado - PHP Conference Brasil - 2014
Design patterns de uma vez por todas
Design patterns: resolvendo problemas comuns (ruby)
Transformando o wp em uma loja virtual
Ecommerce, mais simples do que parece
Da argila ao forte: como desenvolver uma loja com PagSeguro
Da Argila Ao Forte - Como desenvolver uma loja virtual
Ganhando tempo com casos de testes

Último (19)

PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Processos na gestão de transportes, TM100 Col18
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Apple Pippin Uma breve introdução. - David Glotz
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
COBITxITIL-Entenda as diferença em uso governança TI
Custos e liquidação no SAP Transportation Management, TM130 Col18
Aula 18 - Manipulacao De Arquivos python
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Aula04-Academia Heri- Tecnologia Geral 2025
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Processos na gestão de transportes, TM100 Col18

Docker compose

  • 3. Agenda Docker é fantástico! Mas no mundo real As coisas começam a complicar… Como fazer nossa vida ficar mais simples? Colocando tudo junto! Fácil, simples, prático
  • 4. Docker é fantástico! É possível criar ambientes para desenvolvimento / testes / produção Compartilha recursos deixando os processos mais rápidos É simples de usar Faz uso de cache para reutilizar partes de contêineres
  • 5. Mas no mundo real Um ambiente completo em produção precisa aplicação web banco de dados banco de cache filas de processamento processos em segundo plano etc, etc, etc
  • 6. As coisas começam a complicar… $ cat Dockerfile FROM ruby:2.3.3 RUN apt-get update && apt-get install -y nodejs mysql-client COPY Gemfile* ./ RUN gem install bundler && bundle install RUN mkdir /usr/src/app WORKDIR /usr/src/app COPY . . EXPOSE 3000 CMD ["rails", "server", "-b", "0.0.0.0"]
  • 7. As coisas começam a complicar… $ docker pull mysql:latest $ docker build -t web . $ docker run -d --name=db -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql:latest $ docker run -d --name=web --link db:db -p 3000:3000 --e RAILS_ENV=development -v "${PWD}:/usr/src/app"
  • 8. As coisas começam a complicar… $ docker pull ... $ docker pull ... $ docker build ... $ docker build ... $ docker run ... $ docker run ... $ docker run ... $ docker run ...
  • 9. Como fazer nossa vida ficar mais simples? docker-compose.yml docker-compose up
  • 10. Colocando tudo junto! Mesmo Dockerfile Dockerfile Um arquivo de configuração de ambientes docker-compose.yml
  • 11. Colocando tudo junto! $ cat Dockerfile FROM ruby:2.3.3 RUN apt-get update && apt-get install -y nodejs mysql-client COPY Gemfile* ./ RUN gem install bundler && bundle install RUN mkdir /usr/src/app WORKDIR /usr/src/app COPY . . EXPOSE 3000 CMD ["rails", "server", "-b", "0.0.0.0"]
  • 12. Colocando tudo junto! $ cat docker-compose version: "2" services: web: build: . command: rails server -b 0.0.0.0 volumes: [".:/usr/src/app"] links: ["db:db"] ports: ["3000:3000"] environment: RAILS_ENV: development db: image: mysql environment: MYSQL_ALLOW_EMPTY_PASSWORD: "true"
  • 14. Fácil, simples e prático docker-compose build docker-compose up docker-compose ps docker-compose exec docker-compose start/stop/restart docker-compose rm docker-compose logs docker-compose top
  • 15. “A arte de programar consiste em organizar e dominar a complexidade.” –Johnny Appleseed