Rails 7 avec Ruby 3, MySQL 8 et Redis sur Docker Alpine
Dans le passé, j’utilisais Rails et j’ai toujours admiré sa capacité à augmenter la vitesse de développement des logiciels grâce à sa flexibilité et sa facilité d’utilisation. Étant donné qu’il y a de nombreux développeurs qui travaillent sur différentes versions de Rails et que je voulais tester la dernière version disponible (2023), j’ai décidé de créer un guide pour exécuter Rails sur Docker sans utiliser d’outil natif.
Cet article donne un guide sur la configuration de Rails 7 avec Ruby 3, MySQL 8 et Redis dans Docker Alpine. Cela comprend une courte explication du fichier Dockerfile, du fichier d’environnement et du fichier Docker Compose pour la configuration du backend.
On presente…, le fichier Dockerfile!
Le fichier Dockerfile est notre premier point d’entrée vers le backend, et c’est l’un des services les plus compliqués à maintenir. Que peut-on faire?
Vu les temps actuels, tu peux demander à ChatGPT d’interpréter le code suivant, mais si tu veux éviter d’ouvrir un autre onglet de navigateur, reste ici. Encore mieux, je vais essayer de simplifier chaque étape.
J’utilise Alpine pour construire l’application. On doit installer quelques dépendances, c’est pourquoi on utilise la commande apk
. Évidemment, tu peux remplacer le système d’exploitation par Ubuntu ou Debian, mais tu devrais mettre à jour l’étape d’installation des dépendances.
Puisque je manque de créativité pour inventer un grand nombre de services, j’utilise souvent potato
(pomme de terre) comme nom d’application ou comme préfixe de service. Tu peux le changer selon tes préférences.
Pour le prochain acte, un fichier .env!
Un fichier d’environnement est utilisé pour transmettre des variables à l’application Rails. Ici, on configure notre accès à la base de données et en même temps, on envoie certaines valeurs d’environnement à l’application.
Fais attention lorsque vous créez un commit pour ce fichier, ou ignore-le dans Git.
Si tu souhaites avoir la même structure de fichier, mais avec des valeurs vides, laisse les clés et supprime les valeurs à droite. Tu peux utiliser .env.example
comme nom de fichier.
Enfin, et non des moindres: le fichier Docker compose!
Ici, on peut définir comment travailler sur Rails, le conteneur MySQL et Redis, tous ensemble.
Si tu utilises les ports d’application suivants : Rails 3000
, MySQL 3306
et Redis 6379
, n’hésite pas à les changer.
De plus, dans le conteneur de l’application, tout le code est monté dans le dossier /app
.
Chaque fois que tu démarres le conteneur, il exécute bundle install
pour s’assurer que l’application a toutes les dépendances requises et utilisées. Ensuite, il commence le serveur de développement sur le port 3000
, qui sera redirigé vers le host de Docker, c’est-à-dire ton ordinateur.
Derniers détails
Ce sont toutes les étapes dont tu as besoin pour exécuter ton application à partir de Docker.
Une fois terminé, tu peux utiliser docker compose up -d
.