SlideShare une entreprise Scribd logo
1  sur  20
Continuous Delivery com
Docker, OpenShift e Jenkins
Bruno Padilha
DevOps Engineer
(Leroy Labs)
Gabriel Machado
Software Developer
(Digital / Ecommerce)
gmsantos
gmsantos__
gmsantos
gmsantos
brunopadz
brunopadz
brunopadz
Agenda
● A Leroy Merlin
● Sobre o projeto
○ Overview
○ Arquitetura
○ Organização repositório (Monorepo ou multirepo)
● Execução ambiente local
○ Processo de Deployment
○ Pipeline de CI/CD
● Jenkins
● Demo
A Leroy Merlin
● Rede Francesa multiespecialista do lar
● Presente no Brasil desde 1998
● 41 lojas distribuídas em 11 estados + e-commerce
● +10.000 colaboradores
● Presente em 12 países com +400 lojas
A Leroy Merlin
● Transformação digital (quem nunca?)
● Substituição ou evolução de sistemas legados
● Migração para nuvem
● Aplicações distribuídas entre vários providers
Projeto
● Abrangência global
● Aplicações Mobile, PWA
● Baseado em microserviços
● Reaproveitamento de serviços entre projetos
Arquitetura
Preocupações Monorepo Multirepo
Acompanhamento de
mudanças consolidado
✅ ❌
Organização ✅ ✅
Ambiente de dev ✅ ❌
Tamanho do repositório ❌ ✅
Custo ✅ ❌
Monorepo ou multirepo?
📁 project
|-- Jenkinsfile
|-- docker-compose.yml
|-- docker-compose.build.yml
📁service-A/
|--- docker-compose.yml
|--- Dockerfile.app
|--- Dockerfile.web
📁--- docker/
📁---- app/
📁---- web/
📁service-B/
|--- docker-compose.yml
|--- Dockerfile.app
|----Dockerfile.web
📁--- docker/
📁---- app/
📁---- web/
Estrutura do repositório
Dockerfile
FROM composer:1.6 as build
ARG composer_args=""
WORKDIR /var/www/html
RUN mkdir -p database/seeds database/factories
COPY composer.json composer.lock ./
RUN composer install ${composer_args} --no-progress --no-scripts --ignore-platform-reqs 
&& composer clear-cache
COPY . ./
RUN composer dump-autoload ${composer_args} --classmap-authoritative
FROM leroymerlinbr/base-image:0.2
COPY --chown=www-data:root --from=build /var/www/html ./
Cache dependências
Build restante
aplicação
Args para build dev/prod
Execução do projeto
$ docker-compose up --build -d
Creating network "baleinedev_content" with driver "bridge"
Creating network "baleinedev_cluster" with driver "bridge"
Creating network "baleinedev_auth" with driver "bridge"
Creating volume "baleinedev_mongodb-data" with local driver
Building auth-web
Step 1/6 : FROM nginx:1.13-alpine
...
Successfully built 48319c1ae833
Successfully tagged leroymerlinbr/baleine-auth-web:latest
...
...
Creating baleienedev_mongodb_1 ... done
Creating baleinedev_auth-web_1 ... done
Creating baleienedev_content-app_1 ... done
Creating baleinedev_content-web_1 ... done
Creating baleinedev_es_1 ... done
Creating baleienedev_kibana_1 ... done
Creating baleienedev_logstash_1 ... done
Processo de Deployment
Processo de Deployment
Processo de Deployment
Processo de Deployment
Jenkinsfile
Jenkins Pipeline
Jenkins Pipeline
Demo
Obrigado!
Perguntas?
Continuous Delivery com
Docker, OpenShift e Jenkins
gmsantos
gmsantos__
gmsantos
gmsantos
brunopadz
brunopadz
brunopadz

Contenu connexe

Similaire à CD com Docker, OpenShift e Jenkins

TDC Floripa (2017) - MicroServiços para Não StartUps
TDC Floripa (2017) - MicroServiços para Não StartUpsTDC Floripa (2017) - MicroServiços para Não StartUps
TDC Floripa (2017) - MicroServiços para Não StartUpsGiscard Faria
 
Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!tdc-globalcode
 
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018Renato Groff
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiFelipe Caputo
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiMayara Fernandes
 
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018Docker: introdução e primeiros passos - Baixada NERD - Junho-2018
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018Renato Groff
 
Docker para Desenvolvedores .NET - .NET SP - Abril-2018
Docker para Desenvolvedores .NET - .NET SP - Abril-2018Docker para Desenvolvedores .NET - .NET SP - Abril-2018
Docker para Desenvolvedores .NET - .NET SP - Abril-2018Renato Groff
 
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Renato Groff
 
TDC2017 | POA Trilha Infraestrutura Agil - Atender uma estrutura organizacion...
TDC2017 | POA Trilha Infraestrutura Agil - Atender uma estrutura organizacion...TDC2017 | POA Trilha Infraestrutura Agil - Atender uma estrutura organizacion...
TDC2017 | POA Trilha Infraestrutura Agil - Atender uma estrutura organizacion...tdc-globalcode
 
API management: um aliado para construção de APIs
API management: um aliado para construção de APIsAPI management: um aliado para construção de APIs
API management: um aliado para construção de APIsRafael de Paula Souza
 
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013Marcio Junior Vieira
 
Desenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma PentahoDesenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma PentahoAmbiente Livre
 
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018Renato Groff
 
Desenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma PentahoDesenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma PentahoPentahoBrasil
 
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 Lições aprendidas com a Re (escrita |design) de uma aplicação PHP  Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP Domingos Teruel
 
Dos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestraDos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestraRafael Chaves
 

Similaire à CD com Docker, OpenShift e Jenkins (20)

TDC Floripa (2017) - MicroServiços para Não StartUps
TDC Floripa (2017) - MicroServiços para Não StartUpsTDC Floripa (2017) - MicroServiços para Não StartUps
TDC Floripa (2017) - MicroServiços para Não StartUps
 
Pitch lightooth
Pitch lightoothPitch lightooth
Pitch lightooth
 
Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!
 
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
Docker + Bancos de Dados: isto é possível? - Databases SP - Março-2018
 
MicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applicationsMicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applications
 
Desconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em DelphiDesconstruindo monolitos - Construindo microservicos em Delphi
Desconstruindo monolitos - Construindo microservicos em Delphi
 
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos DelphiTDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
TDCPOA2018 - Trilha Delphi - Desconstruindo Monolitos Delphi
 
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018Docker: introdução e primeiros passos - Baixada NERD - Junho-2018
Docker: introdução e primeiros passos - Baixada NERD - Junho-2018
 
Docker para Desenvolvedores .NET - .NET SP - Abril-2018
Docker para Desenvolvedores .NET - .NET SP - Abril-2018Docker para Desenvolvedores .NET - .NET SP - Abril-2018
Docker para Desenvolvedores .NET - .NET SP - Abril-2018
 
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
Banco de Dados - Docker Compose + Bancos NoSQL: descomplicando a montagem de ...
 
TDC2017 | POA Trilha Infraestrutura Agil - Atender uma estrutura organizacion...
TDC2017 | POA Trilha Infraestrutura Agil - Atender uma estrutura organizacion...TDC2017 | POA Trilha Infraestrutura Agil - Atender uma estrutura organizacion...
TDC2017 | POA Trilha Infraestrutura Agil - Atender uma estrutura organizacion...
 
API management: um aliado para construção de APIs
API management: um aliado para construção de APIsAPI management: um aliado para construção de APIs
API management: um aliado para construção de APIs
 
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
Palestra: Desenvolvendo Produtos sobre a Plataforma Pentaho - Pentaho Day 2013
 
Desenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma PentahoDesenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma Pentaho
 
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
Docker: introdução e primeiros passos - Sorocódigos - Agosto-2018
 
Desenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma PentahoDesenvolvendo Produtos sobre a Plataforma Pentaho
Desenvolvendo Produtos sobre a Plataforma Pentaho
 
São Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOpsSão Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOps
 
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 Lições aprendidas com a Re (escrita |design) de uma aplicação PHP  Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 
Linuxtips - a saideira
Linuxtips - a saideiraLinuxtips - a saideira
Linuxtips - a saideira
 
Dos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestraDos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestra
 

Plus de Gabriel Machado

Implementando PSR-3 com Monolog
Implementando PSR-3 com MonologImplementando PSR-3 com Monolog
Implementando PSR-3 com MonologGabriel Machado
 
GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019Gabriel Machado
 
Logs, pra que te quero! @ Meetup PHP Vale
Logs, pra que te quero! @ Meetup PHP ValeLogs, pra que te quero! @ Meetup PHP Vale
Logs, pra que te quero! @ Meetup PHP ValeGabriel Machado
 
Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Gabriel Machado
 
Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019
Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019
Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019Gabriel Machado
 
Pipelines de CI/CD com Azure @ Oktober Cloud
Pipelines de CI/CD com Azure @ Oktober CloudPipelines de CI/CD com Azure @ Oktober Cloud
Pipelines de CI/CD com Azure @ Oktober CloudGabriel Machado
 
Symfony Flex @ PHP Community Summit 2018
Symfony Flex @ PHP Community Summit 2018Symfony Flex @ PHP Community Summit 2018
Symfony Flex @ PHP Community Summit 2018Gabriel Machado
 
Symfony Flex @ 2º Meetup PHPVale
Symfony Flex @ 2º Meetup PHPValeSymfony Flex @ 2º Meetup PHPVale
Symfony Flex @ 2º Meetup PHPValeGabriel Machado
 
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 Gabriel Machado
 
Logs no Laravel 5.6 @ 7masters Laravel
Logs no Laravel 5.6 @ 7masters LaravelLogs no Laravel 5.6 @ 7masters Laravel
Logs no Laravel 5.6 @ 7masters LaravelGabriel Machado
 
Relatórios gerenciais com MySQL @ 7Masters MySQL
Relatórios gerenciais com MySQL @ 7Masters MySQLRelatórios gerenciais com MySQL @ 7Masters MySQL
Relatórios gerenciais com MySQL @ 7Masters MySQLGabriel Machado
 
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Gabriel Machado
 
Logs, pra que te quero! @ TDC SP 2017
Logs, pra que te quero! @ TDC SP 2017Logs, pra que te quero! @ TDC SP 2017
Logs, pra que te quero! @ TDC SP 2017Gabriel Machado
 
Novidades do Laravel 5.3 @ 11º Meetup Laravel SP
Novidades do Laravel 5.3 @ 11º Meetup Laravel SPNovidades do Laravel 5.3 @ 11º Meetup Laravel SP
Novidades do Laravel 5.3 @ 11º Meetup Laravel SPGabriel Machado
 

Plus de Gabriel Machado (14)

Implementando PSR-3 com Monolog
Implementando PSR-3 com MonologImplementando PSR-3 com Monolog
Implementando PSR-3 com Monolog
 
GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019GitHub Actions @ Oktober Cloud 2019
GitHub Actions @ Oktober Cloud 2019
 
Logs, pra que te quero! @ Meetup PHP Vale
Logs, pra que te quero! @ Meetup PHP ValeLogs, pra que te quero! @ Meetup PHP Vale
Logs, pra que te quero! @ Meetup PHP Vale
 
Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019Implementando PSR-3 com Monolog @ PHP Community Summit 2019
Implementando PSR-3 com Monolog @ PHP Community Summit 2019
 
Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019
Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019
Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019
 
Pipelines de CI/CD com Azure @ Oktober Cloud
Pipelines de CI/CD com Azure @ Oktober CloudPipelines de CI/CD com Azure @ Oktober Cloud
Pipelines de CI/CD com Azure @ Oktober Cloud
 
Symfony Flex @ PHP Community Summit 2018
Symfony Flex @ PHP Community Summit 2018Symfony Flex @ PHP Community Summit 2018
Symfony Flex @ PHP Community Summit 2018
 
Symfony Flex @ 2º Meetup PHPVale
Symfony Flex @ 2º Meetup PHPValeSymfony Flex @ 2º Meetup PHPVale
Symfony Flex @ 2º Meetup PHPVale
 
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018 O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
O que não fazer ao atualizar para o PHP 7 @ TDC SP 2018
 
Logs no Laravel 5.6 @ 7masters Laravel
Logs no Laravel 5.6 @ 7masters LaravelLogs no Laravel 5.6 @ 7masters Laravel
Logs no Laravel 5.6 @ 7masters Laravel
 
Relatórios gerenciais com MySQL @ 7Masters MySQL
Relatórios gerenciais com MySQL @ 7Masters MySQLRelatórios gerenciais com MySQL @ 7Masters MySQL
Relatórios gerenciais com MySQL @ 7Masters MySQL
 
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
Logs, pra que te quero! @ PHP Community Summit by locaweb 2017
 
Logs, pra que te quero! @ TDC SP 2017
Logs, pra que te quero! @ TDC SP 2017Logs, pra que te quero! @ TDC SP 2017
Logs, pra que te quero! @ TDC SP 2017
 
Novidades do Laravel 5.3 @ 11º Meetup Laravel SP
Novidades do Laravel 5.3 @ 11º Meetup Laravel SPNovidades do Laravel 5.3 @ 11º Meetup Laravel SP
Novidades do Laravel 5.3 @ 11º Meetup Laravel SP
 

CD com Docker, OpenShift e Jenkins

  • 1. Continuous Delivery com Docker, OpenShift e Jenkins
  • 2. Bruno Padilha DevOps Engineer (Leroy Labs) Gabriel Machado Software Developer (Digital / Ecommerce) gmsantos gmsantos__ gmsantos gmsantos brunopadz brunopadz brunopadz
  • 3. Agenda ● A Leroy Merlin ● Sobre o projeto ○ Overview ○ Arquitetura ○ Organização repositório (Monorepo ou multirepo) ● Execução ambiente local ○ Processo de Deployment ○ Pipeline de CI/CD ● Jenkins ● Demo
  • 4. A Leroy Merlin ● Rede Francesa multiespecialista do lar ● Presente no Brasil desde 1998 ● 41 lojas distribuídas em 11 estados + e-commerce ● +10.000 colaboradores ● Presente em 12 países com +400 lojas
  • 5. A Leroy Merlin ● Transformação digital (quem nunca?) ● Substituição ou evolução de sistemas legados ● Migração para nuvem ● Aplicações distribuídas entre vários providers
  • 6. Projeto ● Abrangência global ● Aplicações Mobile, PWA ● Baseado em microserviços ● Reaproveitamento de serviços entre projetos
  • 8. Preocupações Monorepo Multirepo Acompanhamento de mudanças consolidado ✅ ❌ Organização ✅ ✅ Ambiente de dev ✅ ❌ Tamanho do repositório ❌ ✅ Custo ✅ ❌ Monorepo ou multirepo?
  • 9. 📁 project |-- Jenkinsfile |-- docker-compose.yml |-- docker-compose.build.yml 📁service-A/ |--- docker-compose.yml |--- Dockerfile.app |--- Dockerfile.web 📁--- docker/ 📁---- app/ 📁---- web/ 📁service-B/ |--- docker-compose.yml |--- Dockerfile.app |----Dockerfile.web 📁--- docker/ 📁---- app/ 📁---- web/ Estrutura do repositório
  • 10. Dockerfile FROM composer:1.6 as build ARG composer_args="" WORKDIR /var/www/html RUN mkdir -p database/seeds database/factories COPY composer.json composer.lock ./ RUN composer install ${composer_args} --no-progress --no-scripts --ignore-platform-reqs && composer clear-cache COPY . ./ RUN composer dump-autoload ${composer_args} --classmap-authoritative FROM leroymerlinbr/base-image:0.2 COPY --chown=www-data:root --from=build /var/www/html ./ Cache dependências Build restante aplicação Args para build dev/prod
  • 11. Execução do projeto $ docker-compose up --build -d Creating network "baleinedev_content" with driver "bridge" Creating network "baleinedev_cluster" with driver "bridge" Creating network "baleinedev_auth" with driver "bridge" Creating volume "baleinedev_mongodb-data" with local driver Building auth-web Step 1/6 : FROM nginx:1.13-alpine ... Successfully built 48319c1ae833 Successfully tagged leroymerlinbr/baleine-auth-web:latest ... ... Creating baleienedev_mongodb_1 ... done Creating baleinedev_auth-web_1 ... done Creating baleienedev_content-app_1 ... done Creating baleinedev_content-web_1 ... done Creating baleinedev_es_1 ... done Creating baleienedev_kibana_1 ... done Creating baleienedev_logstash_1 ... done
  • 19. Demo
  • 20. Obrigado! Perguntas? Continuous Delivery com Docker, OpenShift e Jenkins gmsantos gmsantos__ gmsantos gmsantos brunopadz brunopadz brunopadz

Notes de l'éditeur

  1. Construção, acabamento, decoração, bricolagem e jardinagem
  2. Construção, acabamento, decoração, bricolagem e jardinagem
  3. https://1drv.ms/v/s!AkO2IK4_54cRguwfoRimvPlMw-1ucA