SlideShare a Scribd company logo
Continuous Delivery com
Docker, OpenShift e Jenkins
Bruno Padilha
DevOps Engineer
Gabriel Machado
Software and DevOps Engineer
gmsantos
gmsantos__
gmsantos
brunopadz
brunopadz
brunopadz
Agenda
● A Leroy Merlin
● Sobre o projeto
○ Overview
○ Arquitetura
○ Organização do Projeto
● Execução ambiente local
○ Processo de Deployment
○ Pipeline de CI/CD
● Jenkins
● Demo
A Leroy Merlin
A Leroy Merlin
● Rede Francesa multi especialista do lar
● No Brasil desde 1998
● 42 lojas distribuídas em 11 estados
● +10.000 colaboradores
● Presente em 12 países com +400 lojas
A Leroy Merlin
● Momento de Transformação digital
○ Renovação dos sistemas
○ Cloud Native e Mobile First
○ Multi Cloud
● Integração global com o Adeo
○ Innersourcing
○ Sistemas mantidos pelo grupo
Projeto
● Mobile com PWA (React Native e Webview)
● Baseado em microserviços
● Reaproveitamento de serviços entre projetos
Arquitetura
Arquitetura
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
📁 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
📁 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
📁 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
📁 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
📁 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
📁 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 ./
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
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
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
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!
Continuous Delivery com
Docker, OpenShift e Jenkins
gmsantos
gmsantos__
gmsantos
brunopadz
brunopadz
brunopadz
Slides disponíveis em: http://bit.ly/doj-churrops
Ad

More Related Content

What's hot (20)

Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
Annie Huang
 
Google App Engine: Basic
Google App Engine: BasicGoogle App Engine: Basic
Google App Engine: Basic
KAI CHU CHUNG
 
Docker in Production: Reality, Not Hype
Docker in Production: Reality, Not HypeDocker in Production: Reality, Not Hype
Docker in Production: Reality, Not Hype
bridgetkromhout
 
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
Coscup x ruby conf tw 2021  google cloud buildpacks 剖析與實踐Coscup x ruby conf tw 2021  google cloud buildpacks 剖析與實踐
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
KAI CHU CHUNG
 
Docker in Production: Reality, Not Hype - DevOps Chicago
Docker in Production: Reality, Not Hype - DevOps ChicagoDocker in Production: Reality, Not Hype - DevOps Chicago
Docker in Production: Reality, Not Hype - DevOps Chicago
bridgetkromhout
 
Drone CI/CD Platform
Drone CI/CD PlatformDrone CI/CD Platform
Drone CI/CD Platform
Bo-Yi Wu
 
Docker 導入:障礙與對策
Docker 導入:障礙與對策Docker 導入:障礙與對策
Docker 導入:障礙與對策
William Yeh
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a pro
sparkfabrik
 
Docker as development environment
Docker as development environmentDocker as development environment
Docker as development environment
Bruno de Lima e Silva
 
Ruby microservices with Docker - Sergii Koba
Ruby microservices with Docker -  Sergii KobaRuby microservices with Docker -  Sergii Koba
Ruby microservices with Docker - Sergii Koba
Ruby Meditation
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
KAI CHU CHUNG
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
Arto Artnik
 
Statyczna analiza kodu PHP
Statyczna analiza kodu PHPStatyczna analiza kodu PHP
Statyczna analiza kodu PHP
The Software House
 
CI CD WORKFLOW
CI CD WORKFLOWCI CD WORKFLOW
CI CD WORKFLOW
AddWeb Solution Pvt. Ltd.
 
drone continuous Integration
drone continuous Integrationdrone continuous Integration
drone continuous Integration
Bo-Yi Wu
 
Lando - AddWeb Solution
Lando - AddWeb Solution Lando - AddWeb Solution
Lando - AddWeb Solution
AddWeb Solution Pvt. Ltd.
 
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for BeginnersNinja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
Chang W. Doh
 
Docker in everyday development
Docker in everyday developmentDocker in everyday development
Docker in everyday development
Justyna Ilczuk
 
Super powered Drupal development with docker
Super powered Drupal development with dockerSuper powered Drupal development with docker
Super powered Drupal development with docker
Maciej Lukianski
 
Golang workshop
Golang workshopGolang workshop
Golang workshop
Victor S. Recio
 
Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
Annie Huang
 
Google App Engine: Basic
Google App Engine: BasicGoogle App Engine: Basic
Google App Engine: Basic
KAI CHU CHUNG
 
Docker in Production: Reality, Not Hype
Docker in Production: Reality, Not HypeDocker in Production: Reality, Not Hype
Docker in Production: Reality, Not Hype
bridgetkromhout
 
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
Coscup x ruby conf tw 2021  google cloud buildpacks 剖析與實踐Coscup x ruby conf tw 2021  google cloud buildpacks 剖析與實踐
Coscup x ruby conf tw 2021 google cloud buildpacks 剖析與實踐
KAI CHU CHUNG
 
Docker in Production: Reality, Not Hype - DevOps Chicago
Docker in Production: Reality, Not Hype - DevOps ChicagoDocker in Production: Reality, Not Hype - DevOps Chicago
Docker in Production: Reality, Not Hype - DevOps Chicago
bridgetkromhout
 
Drone CI/CD Platform
Drone CI/CD PlatformDrone CI/CD Platform
Drone CI/CD Platform
Bo-Yi Wu
 
Docker 導入:障礙與對策
Docker 導入:障礙與對策Docker 導入:障礙與對策
Docker 導入:障礙與對策
William Yeh
 
Gitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a proGitlab ci e kubernetes, build test and deploy your projects like a pro
Gitlab ci e kubernetes, build test and deploy your projects like a pro
sparkfabrik
 
Ruby microservices with Docker - Sergii Koba
Ruby microservices with Docker -  Sergii KobaRuby microservices with Docker -  Sergii Koba
Ruby microservices with Docker - Sergii Koba
Ruby Meditation
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
KAI CHU CHUNG
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
Arto Artnik
 
drone continuous Integration
drone continuous Integrationdrone continuous Integration
drone continuous Integration
Bo-Yi Wu
 
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for BeginnersNinja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
Chang W. Doh
 
Docker in everyday development
Docker in everyday developmentDocker in everyday development
Docker in everyday development
Justyna Ilczuk
 
Super powered Drupal development with docker
Super powered Drupal development with dockerSuper powered Drupal development with docker
Super powered Drupal development with docker
Maciej Lukianski
 

Similar to Continuous Delivery com Docker, OpenShift e Jenkins (20)

Docker for mac & local developer environment optimization
Docker for mac & local developer environment optimizationDocker for mac & local developer environment optimization
Docker for mac & local developer environment optimization
Radek Baczynski
 
Making kubernetes simple for developers
Making kubernetes simple for developersMaking kubernetes simple for developers
Making kubernetes simple for developers
Suraj Deshmukh
 
CI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOWCI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOW
AddWeb Solution Pvt. Ltd.
 
Learned lessons in a real world project
Learned lessons in a real world projectLearned lessons in a real world project
Learned lessons in a real world project
Luis Rovirosa
 
Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016
Ben Hall
 
DCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker Containers
Docker, Inc.
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
Bo-Yi Wu
 
Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)
Ben Hall
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
Ben Hall
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
Leo Lorieri
 
Docker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak PeekDocker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak Peek
msyukor
 
Docking with Docker
Docking with DockerDocking with Docker
Docking with Docker
University of Alabama at Birmingham
 
Fandogh Cloud workshop slides
Fandogh Cloud workshop slides Fandogh Cloud workshop slides
Fandogh Cloud workshop slides
ssarabadani
 
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) ItalyClustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Giovanni Toraldo
 
Paris container day june17
Paris container day   june17Paris container day   june17
Paris container day june17
Paris Container Day
 
Using Composer with Drupal and Drush
Using Composer with Drupal and DrushUsing Composer with Drupal and Drush
Using Composer with Drupal and Drush
Pantheon
 
Learned lessons in a real world project
Learned lessons in a real world projectLearned lessons in a real world project
Learned lessons in a real world project
Codium
 
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik DornJDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
PROIDEA
 
Using Docker For Development
Using Docker For DevelopmentUsing Docker For Development
Using Docker For Development
Laura Frank Tacho
 
Clustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSEClustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSE
Saputro Aryulianto
 
Docker for mac & local developer environment optimization
Docker for mac & local developer environment optimizationDocker for mac & local developer environment optimization
Docker for mac & local developer environment optimization
Radek Baczynski
 
Making kubernetes simple for developers
Making kubernetes simple for developersMaking kubernetes simple for developers
Making kubernetes simple for developers
Suraj Deshmukh
 
Learned lessons in a real world project
Learned lessons in a real world projectLearned lessons in a real world project
Learned lessons in a real world project
Luis Rovirosa
 
Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016Deploying Windows Containers on Windows Server 2016
Deploying Windows Containers on Windows Server 2016
Ben Hall
 
DCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker Containers
Docker, Inc.
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
Bo-Yi Wu
 
Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)Running Docker in Development & Production (#ndcoslo 2015)
Running Docker in Development & Production (#ndcoslo 2015)
Ben Hall
 
Real World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and ProductionReal World Experience of Running Docker in Development and Production
Real World Experience of Running Docker in Development and Production
Ben Hall
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
Leo Lorieri
 
Docker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak PeekDocker for Web Developers: A Sneak Peek
Docker for Web Developers: A Sneak Peek
msyukor
 
Fandogh Cloud workshop slides
Fandogh Cloud workshop slides Fandogh Cloud workshop slides
Fandogh Cloud workshop slides
ssarabadani
 
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) ItalyClustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Clustering with Docker Swarm - Dockerops 2016 @ Cento (FE) Italy
Giovanni Toraldo
 
Using Composer with Drupal and Drush
Using Composer with Drupal and DrushUsing Composer with Drupal and Drush
Using Composer with Drupal and Drush
Pantheon
 
Learned lessons in a real world project
Learned lessons in a real world projectLearned lessons in a real world project
Learned lessons in a real world project
Codium
 
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik DornJDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
JDD2014: Docker.io - versioned linux containers for JVM devops - Dominik Dorn
PROIDEA
 
Using Docker For Development
Using Docker For DevelopmentUsing Docker For Development
Using Docker For Development
Laura Frank Tacho
 
Clustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSEClustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSE
Saputro Aryulianto
 
Ad

Recently uploaded (20)

The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Unlocking the Power of IVR: A Comprehensive Guide
Unlocking the Power of IVR: A Comprehensive GuideUnlocking the Power of IVR: A Comprehensive Guide
Unlocking the Power of IVR: A Comprehensive Guide
vikasascentbpo
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
MINDCTI revenue release Quarter 1 2025 PR
MINDCTI revenue release Quarter 1 2025 PRMINDCTI revenue release Quarter 1 2025 PR
MINDCTI revenue release Quarter 1 2025 PR
MIND CTI
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Top 10 IT Help Desk Outsourcing Services
Top 10 IT Help Desk Outsourcing ServicesTop 10 IT Help Desk Outsourcing Services
Top 10 IT Help Desk Outsourcing Services
Infrassist Technologies Pvt. Ltd.
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Social Media App Development Company-EmizenTech
Social Media App Development Company-EmizenTechSocial Media App Development Company-EmizenTech
Social Media App Development Company-EmizenTech
Steve Jonas
 
TrsLabs Consultants - DeFi, WEb3, Token Listing
TrsLabs Consultants - DeFi, WEb3, Token ListingTrsLabs Consultants - DeFi, WEb3, Token Listing
TrsLabs Consultants - DeFi, WEb3, Token Listing
Trs Labs
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Unlocking the Power of IVR: A Comprehensive Guide
Unlocking the Power of IVR: A Comprehensive GuideUnlocking the Power of IVR: A Comprehensive Guide
Unlocking the Power of IVR: A Comprehensive Guide
vikasascentbpo
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-UmgebungenHCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungen
panagenda
 
MINDCTI revenue release Quarter 1 2025 PR
MINDCTI revenue release Quarter 1 2025 PRMINDCTI revenue release Quarter 1 2025 PR
MINDCTI revenue release Quarter 1 2025 PR
MIND CTI
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveDesigning Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep Dive
ScyllaDB
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Social Media App Development Company-EmizenTech
Social Media App Development Company-EmizenTechSocial Media App Development Company-EmizenTech
Social Media App Development Company-EmizenTech
Steve Jonas
 
TrsLabs Consultants - DeFi, WEb3, Token Listing
TrsLabs Consultants - DeFi, WEb3, Token ListingTrsLabs Consultants - DeFi, WEb3, Token Listing
TrsLabs Consultants - DeFi, WEb3, Token Listing
Trs Labs
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Cybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure ADCybersecurity Identity and Access Solutions using Azure AD
Cybersecurity Identity and Access Solutions using Azure AD
VICTOR MAESTRE RAMIREZ
 
Ad

Continuous Delivery com Docker, OpenShift e Jenkins

  • 1. Continuous Delivery com Docker, OpenShift e Jenkins
  • 2. Bruno Padilha DevOps Engineer Gabriel Machado Software and DevOps Engineer gmsantos gmsantos__ gmsantos brunopadz brunopadz brunopadz
  • 3. Agenda ● A Leroy Merlin ● Sobre o projeto ○ Overview ○ Arquitetura ○ Organização do Projeto ● Execução ambiente local ○ Processo de Deployment ○ Pipeline de CI/CD ● Jenkins ● Demo
  • 5. A Leroy Merlin ● Rede Francesa multi especialista do lar ● No Brasil desde 1998 ● 42 lojas distribuídas em 11 estados ● +10.000 colaboradores ● Presente em 12 países com +400 lojas
  • 6. A Leroy Merlin ● Momento de Transformação digital ○ Renovação dos sistemas ○ Cloud Native e Mobile First ○ Multi Cloud ● Integração global com o Adeo ○ Innersourcing ○ Sistemas mantidos pelo grupo
  • 7. Projeto ● Mobile com PWA (React Native e Webview) ● Baseado em microserviços ● Reaproveitamento de serviços entre projetos
  • 11. Preocupações Monorepo Multirepo Acompanhamento de mudanças consolidado ✅ ❌ Organização ✅ ✅ Ambiente de dev ✅ ❌ Tamanho do repositório ❌ ✅ Custo ✅ ❌ Monorepo ou multirepo?
  • 12. 📁 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
  • 13. 📁 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
  • 14. 📁 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
  • 15. 📁 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
  • 16. 📁 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
  • 17. 📁 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
  • 18. 📁 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
  • 19. 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 ./
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. 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
  • 32. Demo
  • 33. Obrigado! Continuous Delivery com Docker, OpenShift e Jenkins gmsantos gmsantos__ gmsantos brunopadz brunopadz brunopadz Slides disponíveis em: http://bit.ly/doj-churrops