Votre environnement de dev avec Docker

Bien qu’étant encore un outil jeune, Docker s’impose comme une petite révolution chez les dev et les ops! Cet outil, véritablement pensé pour l’utilisateur, offre une modularité unique. Grâce à DuchessFr, j’ai pu animer un atelier qui consiste à déployer tout un environnement de développement Java, dans des conteneurs Docker! La stack proposée utilise Java […]

docker-logo

Bien qu’étant encore un outil jeune, Docker s’impose comme une petite révolution chez les dev et les ops! Cet outil, véritablement pensé pour l’utilisateur, offre une modularité unique. Grâce à DuchessFr, j’ai pu animer un atelier qui consiste à déployer tout un environnement de développement Java, dans des conteneurs Docker! La stack proposée utilise Java 8, Tomcat 8, Maven 3.3.3, Mysql 2.5.7 et Eclipse Luna JEE.

Si ce cas d’usage vous intéresse, le code et la documentation sont disponibles sur ce répertoire github. Je vous invite évidemment à y contribuer pour ajouter les servlets, IDE ou bases de données que vous préférez.

Architecture

Les conteneurs se répartissent en trois groupes:

  • les binaires
  • les data
  • les process.

 

Changer de version

Les conteneurs binaires contiennent un ou plusieurs répertoires de binaires, dans lesquels Eclipse va piocher pour faire tourner Tomcat ou Maven par exemple. Trois conteneurs binaires sont créés. Multiplier ainsi les conteneurs permet de changer très facilement de version : il suffit de modifier le conteneur pour y télécharger la version appropriée. Les autres conteneurs ne seront pas impactés et vous pourrez retrouver vos données.

Persistance des données

De même, les conteneurs data servent à enregistrer et restituer des données. Ces conteneurs -binaires et data- s’arrêtent dès leur lancement avec le Status Exit(0). Pourtant, certains répertoires de leur file system restent accessibles aux autres conteneurs, grâce à la notion de volumes.

Lorsqu’un conteneur est exclusivement destiné à exposer des volumes destinés aux autres conteneurs, on parle de conteneur data. L’intérêt est de persister les données dans ces conteneurs data, alors que les autres conteneurs peuvent être modifiés ou supprimés.

En pratique

Pour déployer vos projets Maven, il ne vous reste plus qu’à les copier dans le répertoire eclipse-data/maven-projects. Le conteneur Eclipse y aura alors accès et il ne restera plus qu’à ajouter le projet à votre servlet. À tout moment, la base de données est accessible depuis le conteneur Eclipse via l’alias mysql généré par le lien entre les conteneurs mysql et eclipse.

Cet lien, ainsi que le volume vers le répertoire eclipse-data/maven-projects depuis le conteneur eclipsedata, apparaissent clairement dans le fichier docker-compose.yml:

À tout moment pour lancer votre environnement de développement un simple docker-compose up suffit. Si vous souhaitez adapter les conteneurs, modifier les Dockerfile à votre guise avant d’exécuter docker-compose -f docker-compose-build.yml up.

Pour utiliser cette stack sur des systèmes autres que Linux, il faut plutôt exécuter docker-compose -f docker-compose-otheros.yml up ou docker-compose -f docker-compose-otheros-build.yml up. Un client vnc doit ensuite être lancé sur le port 5900 de la machine hôte. (Se référer à la documentation sur github.)

Pour finir

J’espère que ce cas d’usage vous aura convaincu que Docker nous apporte aussi beaucoup de bénéfices au quotidien. La légèreté des conteneurs autorise à les multiplier pour une très grande flexibilité!

Réagissez

  • perelle thomas

    C’est intéressant merci !
    L’administration de la base de données doit se faire ensuite à travers Eclipse ?