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

More Related Content

What's hot

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
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
 

What's hot (20)

Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD Webinar - Unbox GitLab CI/CD
Webinar - Unbox GitLab CI/CD
 
Google App Engine: Basic
Google App Engine: BasicGoogle App Engine: Basic
Google App Engine: Basic
 
Docker in Production: Reality, Not Hype
Docker in Production: Reality, Not HypeDocker in Production: Reality, Not Hype
Docker in Production: Reality, Not Hype
 
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 剖析與實踐
 
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
 
Drone CI/CD Platform
Drone CI/CD PlatformDrone CI/CD Platform
Drone CI/CD Platform
 
Docker 導入:障礙與對策
Docker 導入:障礙與對策Docker 導入:障礙與對策
Docker 導入:障礙與對策
 
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
 
Docker as development environment
Docker as development environmentDocker as development environment
Docker as development environment
 
Ruby microservices with Docker - Sergii Koba
Ruby microservices with Docker -  Sergii KobaRuby microservices with Docker -  Sergii Koba
Ruby microservices with Docker - Sergii Koba
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
 
Toolbox of a Ruby Team
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
 
Statyczna analiza kodu PHP
Statyczna analiza kodu PHPStatyczna analiza kodu PHP
Statyczna analiza kodu PHP
 
CI CD WORKFLOW
CI CD WORKFLOWCI CD WORKFLOW
CI CD WORKFLOW
 
drone continuous Integration
drone continuous Integrationdrone continuous Integration
drone continuous Integration
 
Lando - AddWeb Solution
Lando - AddWeb Solution Lando - AddWeb Solution
Lando - AddWeb Solution
 
Ninja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for BeginnersNinja Build: Simple Guide for Beginners
Ninja Build: Simple Guide for Beginners
 
Docker in everyday development
Docker in everyday developmentDocker in everyday development
Docker in everyday development
 
Super powered Drupal development with docker
Super powered Drupal development with dockerSuper powered Drupal development with docker
Super powered Drupal development with docker
 
Golang workshop
Golang workshopGolang workshop
Golang workshop
 

Similar to Continuous Delivery com Docker, OpenShift e Jenkins

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
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
 

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
 
Making kubernetes simple for developers
Making kubernetes simple for developersMaking kubernetes simple for developers
Making kubernetes simple for developers
 
CI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOWCI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOW
 
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
 
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
 
DCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker ContainersDCEU 18: Developing with Docker Containers
DCEU 18: Developing with Docker Containers
 
Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署Drone CI/CD 自動化測試及部署
Drone CI/CD 自動化測試及部署
 
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)
 
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
 
[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
 
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
 
Docking with Docker
Docking with DockerDocking with Docker
Docking with Docker
 
Fandogh Cloud workshop slides
Fandogh Cloud workshop slides Fandogh Cloud workshop slides
Fandogh Cloud workshop slides
 
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
 
Paris container day june17
Paris container day   june17Paris container day   june17
Paris container day june17
 
Using Composer with Drupal and Drush
Using Composer with Drupal and DrushUsing Composer with Drupal and Drush
Using Composer with Drupal and Drush
 
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
 
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
 
Using Docker For Development
Using Docker For DevelopmentUsing Docker For Development
Using Docker For Development
 
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
 

Recently uploaded

Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
AstuteBusiness
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
Fwdays
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
Enterprise Knowledge
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
christinelarrosa
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
UiPathCommunity
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 

Recently uploaded (20)

Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |Astute Business Solutions | Oracle Cloud Partner |
Astute Business Solutions | Oracle Cloud Partner |
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota"Choosing proper type of scaling", Olena Syrota
"Choosing proper type of scaling", Olena Syrota
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptxPRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
PRODUCT LISTING OPTIMIZATION PRESENTATION.pptx
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 

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