SlideShare une entreprise Scribd logo
1  sur  19
Gérer son environnement de
développement avec Docker

Julien Dubois - @juliendubois
Agenda
Le problème
Présentation de JHipster
Les problèmes liés à notre environnement de dév
La solution
Utilisation de Docker
Démonstration
Questions/Réponses
Le problème
Qu’est-ce que
JHipster ?
JHipster
Un générateur Yeoman
Permet de créer une application complète
Maven + Spring 4 + JPA côté serveur
Grunt + Bower + AngularJS + Twitter Bootstrap + Compass côté
client
2 focus principaux :
Un environnement de travail unifié, avec tous les outils
fonctionnant correctement ensemble
La production : minification des ressources, cache distribué,
monitoring, JAR exécutable unique…
JHipster vous intéresse ?
Rejoignez-nous !
Disponible sur Github 

https://github.com/jhipster/generator-jhipster
Documentation complète sur 

http://jhipster.github.io/
Twitter: @java_hipster
Notre environnement de
développement

Java : JDK, Maven…
JavaScript : Node.js, NPM, Yo, Grunt, Bower…
CSS : Ruby, Compass, Sass…
3 problèmes principaux
Tout installer est long et compliqué
Nous voulons les bonnes versions de chaque outil
Nous ne voulons pas installer n’importe quoi en
étant « root »
Exemples
Pour utiliser Yeoman, il vous faut la dernière version de Node
Pas celle fournie par défaut sur Ubuntu, qui date de Mathusalem
Pour utiliser Compass, il vous faut une vieille version de Ruby
Il vous faut Ruby 1.9.1, en passant par RVM
Pour installer NPM il vous faut être « root ». Pour télécharger vos
dépendances avec Bower, il ne faut pas être « root »
Sans compter l’installation de Git, de Java, de Maven, etc…
Bon courage pour avoir quelque chose qui marche, et qui soit
identique au poste de votre collègue !
Et qui s’occupe du serveur d’intégration continue ?
Et la production ?
Notre stack de développement « moderne » est devenue
particulièrement complexe…
Mais ce n’est pas le cas de notre environnement de production
JHipster génère un « WAR » standard, utilisable sur n’importe
quel PAAS
JHipster génère également un « JAR exécutable », qu’il suffit
donc d’exécuter
java -jar myapplication.jar -Dspring.profiles.active=prod
Nous n’avons donc pas ce type de problème en production pour
JHipster
La solution
Docker
Fourni un « container » dans lequel tous ces outils
sont déjà installés
Simple à démarrer, à tuer, à recréer en fonction des
besoins
Environnement identique pour tous les
développeurs du projet, et pour le serveur
d’intégration continue
Recommandations sur l’utilisation de
Docker
Ne fonctionne en réalité que sous Linux
Si vous n’êtes pas sous Linux, Docker utilise une machine Vagrant
En développement, travaillez de préférence sous Linux
Avoir une machine Vagrant rajoute un niveau supplémentaire de
virtualisation, qui complexifie la configuration
Les répertoires partagés sous VirtualBox sont horriblement lents et buggés
En production, la solution future sera certainement boot2docker
https://github.com/steeve/boot2docker
Proche d’un « hyperviseur bare metal » (ils sont forts en marketing chez
VMWare)
Installation et utilisation du
container Docker
Téléchargez l’image Docker officielle de JHipster
sudo docker pull jdubois/jhipster-docker
Lancez un container
sudo docker run -v ~/jhipster:/jhipster -p 8080:8080 -p
9000:9000 -p 4022:22 -t jdubois/jhipster-docker
Importez votre clef SSH
cat .ssh/id_rsa.pub | ssh -p 4022 jhipster@localhost
'mkdir .ssh && cat >> .ssh/authorized_keys'
Connectez-vous
ssh -p 4022 jhipster@localhost
Utilisation de JHipster
Allez dans votre répertoire partagé
cd /jhipster
Générez votre application
yo jhipster
Lancez votre serveur Tomcat
mvn tomcat7:run
Lancez votre serveur Grunt
grunt server
Fonctionnement de JHipster avec Docker
IDE / Text editor

Shared filesystem on /jhipster

9000
Web
browser

8080
Grunt server

Compass/Sass

JVM

Maven/Tomcat/
Spring/Hibernate/
HSQLDB

Docker container
Ubuntu host (on Virtualbox)
Démonstration
Résultats
Notre environnement de travail est
Simple à installer
Facile à partager avec nos collègues
Reproductible
Sécurisé
Performant (surtout si vous êtes en « natif » sur
Linux)
Questions/réponses
Dockerfile utilisé pour cette présentation :

https://github.com/jhipster/jhipster-docker
JHipster est disponible sur http://jhipster.github.io/
Questions tardives sur Twitter: @juliendubois

Contenu connexe

Tendances

Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesStéphane Di Cioccio
 
L Architecture Logicielle En Pratique
L Architecture Logicielle En PratiqueL Architecture Logicielle En Pratique
L Architecture Logicielle En PratiqueFrançois Trudel
 
Rapport d'une application mobile de recommendation de livres
Rapport d'une application mobile de recommendation de livresRapport d'une application mobile de recommendation de livres
Rapport d'une application mobile de recommendation de livreskaies Labiedh
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées servicesDonia Hammami
 
Design Patterns
Design PatternsDesign Patterns
Design PatternsKoffi Sani
 
Conception et réalisation d’une application Mobile banking
Conception et réalisation d’une application  Mobile banking  Conception et réalisation d’une application  Mobile banking
Conception et réalisation d’une application Mobile banking Khaled Fayala
 
Soutenance PFE ingénieur génie logiciel
Soutenance PFE ingénieur génie logicielSoutenance PFE ingénieur génie logiciel
Soutenance PFE ingénieur génie logicielSiwar GUEMRI
 
[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logicielUSTHB & DELTALOG
 
Rapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammamiRapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammamiDonia Hammami
 
Presentation PFE
Presentation PFEPresentation PFE
Presentation PFEasma amri
 
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESSOAT
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptxboulonvert
 
Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Ayoub Mkharbach
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Nawres Farhat
 
Intégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciIntégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciwiemfourati
 
Aql métriques logicielles
Aql métriques logiciellesAql métriques logicielles
Aql métriques logiciellesmarwa baich
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
 

Tendances (20)

Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequences
 
L Architecture Logicielle En Pratique
L Architecture Logicielle En PratiqueL Architecture Logicielle En Pratique
L Architecture Logicielle En Pratique
 
Rapport d'une application mobile de recommendation de livres
Rapport d'une application mobile de recommendation de livresRapport d'une application mobile de recommendation de livres
Rapport d'une application mobile de recommendation de livres
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées services
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
Maven
MavenMaven
Maven
 
Conception et réalisation d’une application Mobile banking
Conception et réalisation d’une application  Mobile banking  Conception et réalisation d’une application  Mobile banking
Conception et réalisation d’une application Mobile banking
 
Soutenance PFE ingénieur génie logiciel
Soutenance PFE ingénieur génie logicielSoutenance PFE ingénieur génie logiciel
Soutenance PFE ingénieur génie logiciel
 
Metrique
MetriqueMetrique
Metrique
 
[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel
 
Rapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammamiRapport pfe talan_2018_donia_hammami
Rapport pfe talan_2018_donia_hammami
 
Presentation PFE
Presentation PFEPresentation PFE
Presentation PFE
 
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
 
Soa & services web
Soa & services webSoa & services web
Soa & services web
 
Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...Présentation pfe - Etude, conception et réalisation d'une application web de ...
Présentation pfe - Etude, conception et réalisation d'une application web de ...
 
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
Rapport pfe- Refonte et déploiement d’une solution de messagerie en utilisant...
 
Intégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ciIntégration de SonarQube dans GitLab ci
Intégration de SonarQube dans GitLab ci
 
Aql métriques logicielles
Aql métriques logiciellesAql métriques logicielles
Aql métriques logicielles
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 

Similaire à Gérer son environnement de développement avec Docker

Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Quand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsQuand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsArnaud Héritier
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsJohan Moreau
 
Introduction à docker - Meetup WP Rennes
Introduction à docker - Meetup WP RennesIntroduction à docker - Meetup WP Rennes
Introduction à docker - Meetup WP RennesYann Nave
 
Java & Etat de l'art
Java & Etat de l'artJava & Etat de l'art
Java & Etat de l'artInes Ouaz
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
Créer un Micro PaaS avec Docker et Maven
Créer un Micro PaaS avec Docker et MavenCréer un Micro PaaS avec Docker et Maven
Créer un Micro PaaS avec Docker et MavenAmico Fabien
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfHamida Rebai Trabelsi
 
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Société ELOSI
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders BattleArnaud Héritier
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distancepprem
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Romain Chalumeau
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?Microsoft
 
Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloudstefounet
 

Similaire à Gérer son environnement de développement avec Docker (20)

Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Quand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les railsQuand java prend de la vitesse, apache maven vous garde sur les rails
Quand java prend de la vitesse, apache maven vous garde sur les rails
 
De la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logicielsDe la chaîne de production au SI géré par des logiciels
De la chaîne de production au SI géré par des logiciels
 
Introduction à docker - Meetup WP Rennes
Introduction à docker - Meetup WP RennesIntroduction à docker - Meetup WP Rennes
Introduction à docker - Meetup WP Rennes
 
Java & Etat de l'art
Java & Etat de l'artJava & Etat de l'art
Java & Etat de l'art
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Créer un Micro PaaS avec Docker et Maven
Créer un Micro PaaS avec Docker et MavenCréer un Micro PaaS avec Docker et Maven
Créer un Micro PaaS avec Docker et Maven
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
 
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distance
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
 
Node.js
Node.jsNode.js
Node.js
 
JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
 
Présentation1
Présentation1Présentation1
Présentation1
 
Server Side Javascript in the cloud
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloud
 

Plus de Julien Dubois

Accessibility in the UK
Accessibility in the UKAccessibility in the UK
Accessibility in the UKJulien Dubois
 
Java on Azure "Back to Basics" series - databases introduction
Java on Azure "Back to Basics" series - databases introductionJava on Azure "Back to Basics" series - databases introduction
Java on Azure "Back to Basics" series - databases introductionJulien Dubois
 
JHipster Code 2020 keynote
JHipster Code 2020 keynoteJHipster Code 2020 keynote
JHipster Code 2020 keynoteJulien Dubois
 
Running Spring Boot microservices in the cloud
Running Spring Boot microservices in the cloudRunning Spring Boot microservices in the cloud
Running Spring Boot microservices in the cloudJulien Dubois
 
JHipster Conf 2019 English keynote
JHipster Conf 2019 English keynoteJHipster Conf 2019 English keynote
JHipster Conf 2019 English keynoteJulien Dubois
 
JHipster Conf 2019 French keynote
JHipster Conf 2019 French keynoteJHipster Conf 2019 French keynote
JHipster Conf 2019 French keynoteJulien Dubois
 
Créer et développer une communauté Open Source
Créer et développer une communauté Open SourceCréer et développer une communauté Open Source
Créer et développer une communauté Open SourceJulien Dubois
 
JHipster Conf 2018 Quiz
JHipster Conf 2018 QuizJHipster Conf 2018 Quiz
JHipster Conf 2018 QuizJulien Dubois
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterJulien Dubois
 
JHipster overview and roadmap (August 2017)
JHipster overview and roadmap (August 2017)JHipster overview and roadmap (August 2017)
JHipster overview and roadmap (August 2017)Julien Dubois
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipsterJulien Dubois
 
Requêtes multi-critères avec Cassandra
Requêtes multi-critères avec CassandraRequêtes multi-critères avec Cassandra
Requêtes multi-critères avec CassandraJulien Dubois
 
JHipster à Devoxx 2015
JHipster à Devoxx 2015JHipster à Devoxx 2015
JHipster à Devoxx 2015Julien Dubois
 
Développer et déployer dans le cloud
Développer et déployer dans le cloudDévelopper et déployer dans le cloud
Développer et déployer dans le cloudJulien Dubois
 
JHipster for Spring Boot webinar
JHipster for Spring Boot webinarJHipster for Spring Boot webinar
JHipster for Spring Boot webinarJulien Dubois
 
Performance tuning the Spring Pet Clinic sample application
Performance tuning the Spring Pet Clinic sample applicationPerformance tuning the Spring Pet Clinic sample application
Performance tuning the Spring Pet Clinic sample applicationJulien Dubois
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéJulien Dubois
 

Plus de Julien Dubois (20)

Accessibility in the UK
Accessibility in the UKAccessibility in the UK
Accessibility in the UK
 
Java on Azure "Back to Basics" series - databases introduction
Java on Azure "Back to Basics" series - databases introductionJava on Azure "Back to Basics" series - databases introduction
Java on Azure "Back to Basics" series - databases introduction
 
JHipster Code 2020 keynote
JHipster Code 2020 keynoteJHipster Code 2020 keynote
JHipster Code 2020 keynote
 
Running Spring Boot microservices in the cloud
Running Spring Boot microservices in the cloudRunning Spring Boot microservices in the cloud
Running Spring Boot microservices in the cloud
 
Spring on Azure
Spring on AzureSpring on Azure
Spring on Azure
 
JHipster Conf 2019 English keynote
JHipster Conf 2019 English keynoteJHipster Conf 2019 English keynote
JHipster Conf 2019 English keynote
 
JHipster Conf 2019 French keynote
JHipster Conf 2019 French keynoteJHipster Conf 2019 French keynote
JHipster Conf 2019 French keynote
 
Créer et développer une communauté Open Source
Créer et développer une communauté Open SourceCréer et développer une communauté Open Source
Créer et développer une communauté Open Source
 
JHipster Conf 2018 Quiz
JHipster Conf 2018 QuizJHipster Conf 2018 Quiz
JHipster Conf 2018 Quiz
 
Devoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipsterDevoxx Belgium 2017 - easy microservices with JHipster
Devoxx Belgium 2017 - easy microservices with JHipster
 
JHipster overview and roadmap (August 2017)
JHipster overview and roadmap (August 2017)JHipster overview and roadmap (August 2017)
JHipster overview and roadmap (August 2017)
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
 
JHipster overview
JHipster overviewJHipster overview
JHipster overview
 
Requêtes multi-critères avec Cassandra
Requêtes multi-critères avec CassandraRequêtes multi-critères avec Cassandra
Requêtes multi-critères avec Cassandra
 
JHipster à Devoxx 2015
JHipster à Devoxx 2015JHipster à Devoxx 2015
JHipster à Devoxx 2015
 
Développer et déployer dans le cloud
Développer et déployer dans le cloudDévelopper et déployer dans le cloud
Développer et déployer dans le cloud
 
JHipster for Spring Boot webinar
JHipster for Spring Boot webinarJHipster for Spring Boot webinar
JHipster for Spring Boot webinar
 
Performance tuning the Spring Pet Clinic sample application
Performance tuning the Spring Pet Clinic sample applicationPerformance tuning the Spring Pet Clinic sample application
Performance tuning the Spring Pet Clinic sample application
 
De Devoxx au CAC40
De Devoxx au CAC40De Devoxx au CAC40
De Devoxx au CAC40
 
HTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilitéHTML5, Spring, NoSQL et mobilité
HTML5, Spring, NoSQL et mobilité
 

Gérer son environnement de développement avec Docker

  • 1. Gérer son environnement de développement avec Docker Julien Dubois - @juliendubois
  • 2. Agenda Le problème Présentation de JHipster Les problèmes liés à notre environnement de dév La solution Utilisation de Docker Démonstration Questions/Réponses
  • 5. JHipster Un générateur Yeoman Permet de créer une application complète Maven + Spring 4 + JPA côté serveur Grunt + Bower + AngularJS + Twitter Bootstrap + Compass côté client 2 focus principaux : Un environnement de travail unifié, avec tous les outils fonctionnant correctement ensemble La production : minification des ressources, cache distribué, monitoring, JAR exécutable unique…
  • 6. JHipster vous intéresse ? Rejoignez-nous ! Disponible sur Github 
 https://github.com/jhipster/generator-jhipster Documentation complète sur 
 http://jhipster.github.io/ Twitter: @java_hipster
  • 7. Notre environnement de développement Java : JDK, Maven… JavaScript : Node.js, NPM, Yo, Grunt, Bower… CSS : Ruby, Compass, Sass…
  • 8. 3 problèmes principaux Tout installer est long et compliqué Nous voulons les bonnes versions de chaque outil Nous ne voulons pas installer n’importe quoi en étant « root »
  • 9. Exemples Pour utiliser Yeoman, il vous faut la dernière version de Node Pas celle fournie par défaut sur Ubuntu, qui date de Mathusalem Pour utiliser Compass, il vous faut une vieille version de Ruby Il vous faut Ruby 1.9.1, en passant par RVM Pour installer NPM il vous faut être « root ». Pour télécharger vos dépendances avec Bower, il ne faut pas être « root » Sans compter l’installation de Git, de Java, de Maven, etc… Bon courage pour avoir quelque chose qui marche, et qui soit identique au poste de votre collègue ! Et qui s’occupe du serveur d’intégration continue ?
  • 10. Et la production ? Notre stack de développement « moderne » est devenue particulièrement complexe… Mais ce n’est pas le cas de notre environnement de production JHipster génère un « WAR » standard, utilisable sur n’importe quel PAAS JHipster génère également un « JAR exécutable », qu’il suffit donc d’exécuter java -jar myapplication.jar -Dspring.profiles.active=prod Nous n’avons donc pas ce type de problème en production pour JHipster
  • 12. Docker Fourni un « container » dans lequel tous ces outils sont déjà installés Simple à démarrer, à tuer, à recréer en fonction des besoins Environnement identique pour tous les développeurs du projet, et pour le serveur d’intégration continue
  • 13. Recommandations sur l’utilisation de Docker Ne fonctionne en réalité que sous Linux Si vous n’êtes pas sous Linux, Docker utilise une machine Vagrant En développement, travaillez de préférence sous Linux Avoir une machine Vagrant rajoute un niveau supplémentaire de virtualisation, qui complexifie la configuration Les répertoires partagés sous VirtualBox sont horriblement lents et buggés En production, la solution future sera certainement boot2docker https://github.com/steeve/boot2docker Proche d’un « hyperviseur bare metal » (ils sont forts en marketing chez VMWare)
  • 14. Installation et utilisation du container Docker Téléchargez l’image Docker officielle de JHipster sudo docker pull jdubois/jhipster-docker Lancez un container sudo docker run -v ~/jhipster:/jhipster -p 8080:8080 -p 9000:9000 -p 4022:22 -t jdubois/jhipster-docker Importez votre clef SSH cat .ssh/id_rsa.pub | ssh -p 4022 jhipster@localhost 'mkdir .ssh && cat >> .ssh/authorized_keys' Connectez-vous ssh -p 4022 jhipster@localhost
  • 15. Utilisation de JHipster Allez dans votre répertoire partagé cd /jhipster Générez votre application yo jhipster Lancez votre serveur Tomcat mvn tomcat7:run Lancez votre serveur Grunt grunt server
  • 16. Fonctionnement de JHipster avec Docker IDE / Text editor Shared filesystem on /jhipster 9000 Web browser 8080 Grunt server
 Compass/Sass JVM
 Maven/Tomcat/ Spring/Hibernate/ HSQLDB Docker container Ubuntu host (on Virtualbox)
  • 18. Résultats Notre environnement de travail est Simple à installer Facile à partager avec nos collègues Reproductible Sécurisé Performant (surtout si vous êtes en « natif » sur Linux)
  • 19. Questions/réponses Dockerfile utilisé pour cette présentation :
 https://github.com/jhipster/jhipster-docker JHipster est disponible sur http://jhipster.github.io/ Questions tardives sur Twitter: @juliendubois