Développeur curieux et passionné de technologie, ne manquez jamais une occasion d’apprendre quelque chose de nouveau chaque jour ! Cette envie d’apprendre est une chose à laquelle NOUS pouvons nous identifier. Dans cet article, nous allons vous montrer comment dockeriser une application Rails avec l'aide de Rails Docker Compose. Nous avons besoin de Docker, vous devez donc savoir de quoi il s'agit et pourquoi c'est nécessaire.
Commençons par le développement et la dockérisation d'applications.
Qu’est-ce que Docker ?
En utilisant Docker, vous pouvez regrouper un service ou une application avec toutes ses dépendances dans une unité standardisée. Une image Docker est généralement utilisée pour ce type d'unité.
Tous les composants nécessaires à l'exécution de l'application sont inclus. Les images Docker contiennent du code, des environnements d'exécution, des bibliothèques et tout ce que vous installeriez sur un serveur pour les faire fonctionner sans Docker.
Qu'est-ce qui différencie Docker d'une machine virtuelle
Vous avez peut-être exécuté une machine virtuelle à l'aide de Vagrant, VirtualBox ou VMWare. Même si elles peuvent isoler les services, les machines virtuelles sont beaucoup moins efficaces en raison de quelques différences significatives.
Pour chaque application que vous souhaitez isoler, vous avez besoin d’un système d’exploitation invité complet. Les machines virtuelles peuvent également prendre plusieurs secondes pour démarrer, et chacune peut atteindre un gigaoctet.
Un conteneur Docker partage le noyau de votre hôte et l'isolation est réalisée via des groupes et d'autres bibliothèques de noyau. En raison de la légèreté de Docker, un conteneur est généralement démarré en quelques millisecondes et son exécution ne nécessite pas beaucoup d'espace disque.
Quel est le résultat final ?
Ne serait-ce pas génial si vous pouviez développer votre Application Rails sur votre poste de travail de manière isolée sans utiliser RVM ou Churuby, et changer de version de Ruby était simple ?
Ne serait-il pas génial si vous pouviez isoler tout ce dont vous avez besoin pour chacun de vos 10 projets Rails sans gaspiller un précieux stockage SSD ?
Ne serait-il pas génial si vous pouviez faire tourner votre pile Rails, PostgreSQL, Redis et Sidekiq en quelques secondes seulement ?
Pouvez-vous imaginer si vous pouviez partager votre projet sur GitHub et d'autres développeurs pourriez-vous tout faire fonctionner en quelques minutes en exécutant une seule commande ?
Grâce à Docker, toutes ces choses sont possibles.
Les avantages de l'utilisation de Docker
Si Docker offre cinq avantages clés qui amélioreront la productivité de votre développement logiciel et votre expérience globale :
1. Cohérence entre les environnements
Votre application peut être encapsulée avec Docker afin de pouvoir être facilement déplacée entre les environnements. Tous les environnements et machines capables d’exécuter Docker pourront l’exécuter.
2. Des moyens simples d'élargir votre équipe de développement
Un nouveau développeur ne devrait pas avoir à lire un document de 30 pages pour apprendre à exécuter votre application localement. Les nouveaux développeurs sont susceptibles de commettre des erreurs au cours de ce processus, qui peut prendre toute une journée, voire plus.
Vous pouvez automatiser, reproduire et déployer efficacement votre application multiservice au sein de votre équipe avec Docker. Quelques commandes plus tard, tout fonctionne.
3. Choisissez une technologie adaptée à vos besoins
Vous pourriez vous désavantager en tant que startup ou boutique qui n’utilise qu’une seule langue. Vous pouvez expérimenter de nouveaux langages et frameworks en tant que développeur en isolant une application dans un conteneur Docker.
La technologie de votre choix n'a plus besoin d'être mise en place par d'autres développeurs. Ils peuvent exécuter une image Docker que vous leur remettez.
4. Déployez votre image plusieurs fois en la construisant une seule fois
L'image Docker prédéfinie permet de démarrer vos applications en quelques millisecondes. L’évolutivité est donc très simple.
Il n'est nécessaire d'exécuter les tâches fastidieuses qu'une seule fois au moment de la construction, comme l'installation de dépendances. Dès que l’image est créée, vous pouvez la déplacer vers différents hôtes.
En plus de rendre vos déploiements plus prévisibles et plus résilients, cela vous aide à évoluer rapidement.
5. Les responsables des opérations et les développeurs peuvent travailler ensemble
Les développeurs et les responsables des opérations peuvent travailler ensemble avec l'ensemble d'outils de Docker pour déployer des applications.
Une abstraction est fournie par Docker. Une application peut être distribuée et une autre équipe n’a pas besoin de savoir comment l’installer ou la configurer.
De plus, il devient plus facile de distribuer des images Docker en public ou en privé. Au fur et à mesure que de nouvelles versions sont publiées, vous pouvez suivre ce qui a changé.
Les prérequis
Docker doit être installé. Vous pouvez exécuter Docker sur la plupart des principales distributions Linux, et il existe des outils qui vous permettent également de l'exécuter sur OSX et Windows.
Les utilisateurs de Linux bénéficieront de ce didacticiel, mais les utilisateurs d'OSX et de Windows trouveront des commentaires lorsque les choses doivent être ajustées.
Installation du menu Docker
Vous pouvez suivre l'un des guides d'installation ci-dessous en fonction de votre système d'exploitation :
- Linux : https://docs.docker.com/get-started/
- Windows et Mac : https://www.docker.com/products/docker-desktop
Il est recommandé d'avoir installé Docker et d'avoir complété l'exemple Hello World de l'un des guides d'installation ci-dessus avant de continuer.
Conclusion
La conteneurisation d'une production Application Rails comporte un certain nombre de défis, comme vous le savez sans doute. Vous avez peut-être accumulé un certain nombre de dépendances au fur et à mesure de la croissance de votre application, ce qui rend une migration comme celle-ci difficile. Peu importe qu'il s'agisse d'un travailleur en arrière-plan, d'un expéditeur de courrier ou d'un secret, il existe des modèles établis pour gérer la plupart des pièges. La facilité des changements et des déploiements futurs rendra l'investissement rentable une fois le travail initial visant à faire fonctionner une application de production avec Docker terminé.