Comment Dockeriser une application web développée avec Spring boot + vueJs

Souhaitez-vous dockeriser votre application Spring Boot / VueJS avec GitLab CI/CD ? Vous êtes sur le bon article.

Dockeriser une application Web ?

Dans cet article, je vais partager avec vous comment dockeriser une application web simple. L'article prend en compte les aspects Docker, la définition d'un Dockerfile, la construction d'images et l'exécution de conteneurs, mais ne se penche pas sur la façon dont l'application a été développée. L'application comprend une couche Frontend (développée avec Vue.js), une couche backend (une simple application Spring Boot qui expose des services web Spring REST) et une base de données PostgreSQL. En utilisant un fichier Docker, nous allons construire une image Docker pour le frontend et le backend. Ensuite, nous allons créer un conteneur pour le frontend et un autre pour le backend. Tout cela sera automatisé avec GitLab CI/CD. Vous pouvez télécharger le projet à partir de mon dépôt GitLab. Ce projet a été réalisé dans le cadre de mon projet tutoré de troisième année à l'École d'Ingénieurs ISIS. Je profite de l'occasion pour remercier tous mes professeurs et encadrants.

La structure du projet se présente comme suit :

  • Dossier back : contient l'application Spring Boot
  • dossier front : contient la couche frontale développée à l'aide de vueJS.

Voici à quoi ressemble l'application :

OK ! Commençons par le début en jetant un coup d’œil au fichier dockerfile :

Explication du Dockerfile

Dans ce contexte, nous avons besoin uniquement du fichier Docker pour déployer notre application.

Lorsque nous exécutons ce Dockerfile, les fichiers statiques du front-end sont copiés dans le backend, ce qui permet l’exécution complète de notre application.

Voici une décomposition du Dockerfile :

  1. Base de l’image Maven : Nous commençons par importer une image contenant Java et Maven à partir de la version maven:3.8.7-eclipse-temurin-17-alpine.

  2. Installation de libstdc++ : Nous ajoutons la bibliothèque libstdc++ sans cache supplémentaire en utilisant apk add --no-cache libstdc++, ce qui évite les éventuelles erreurs liées aux caches.

  3. Copie des fichiers : Tous les fichiers, y compris le front-end et le back-end, sont copiés depuis notre répertoire racine dans le conteneur.

  4. Répertoire de travail : Nous redéfinissons le répertoire de travail du conteneur sur /gestionsyllabus.

  5. Construction du projet : Ensuite, nous exécutons la commande mvn clean install pour construire notre application à l’intérieur du conteneur. Cette étape nécessite de connaître l’emplacement du fichier JAR généré après la construction.

  6. Démarrage de l’application : Enfin, nous lançons l’application en utilisant la commande java -jar /gestionsyllabus/backend/target/*.jar.

  7. Exposition du port : Nous documentons l’utilisation du port 8989 en exposant le port à l’extérieur du conteneur avec la ligne EXPOSE 8989.

Ce Dockerfile permet de créer un environnement isolé pour notre application, garantissant la reproductibilité et la portabilité de l’exécution, indépendamment de l’hôte sur lequel il est exécuté.

Pour exécuter une image Docker basée sur ce Dockerfile, suivez les étapes suivantes :

  1. Construction de l’image Docker : Assurez-vous que vous avez Docker installé sur votre système. Placez le Dockerfile dans le répertoire du projet où se trouvent vos fichiers frontend et backend. Ensuite, ouvrez un terminal et exécutez la commande suivante pour construire l’image Docker :

    docker build -t nom_de_votre_image .

     

    Remplacez “nom_de_votre_image” par le nom que vous souhaitez donner à votre image Docker. Le point final . indique que le Dockerfile se trouve dans le répertoire actuel.
  2. Exécution du conteneur : Une fois que l’image Docker est construite, vous pouvez exécuter un conteneur à partir de cette image en utilisant la commande suivante :

    docker run -p 8989:8989 nom_de_votre_image

     

    Cela exécutera le conteneur en exposant le port 8989 à l’extérieur du conteneur, conformément à la ligne EXPOSE 8989 de votre Dockerfile.

Maintenant, votre application devrait être accessible à l’adresse http://localhost:8989 ou à l’adresse correspondante à l’IP de votre machine si vous exécutez Docker sur une machine distante.

Assurez-vous d’avoir terminé les étapes de construction de l’image et d’exécution du conteneur dans un terminal ouvert dans le répertoire du projet où se trouve le Dockerfile.

 

  • Vous pouvez consultez le projet via ce lien sur GitHub 

En cas de question, n'hésitez pas à me contacter.

Chercher peut vous permettre de vous empêcher de chercher davantage. Par vous-même et avec un peu d'aide, vous êtes capables de réaliser de grandes choses.

bgbak
Marc Ezechiel Bakayoko Etudiant en informatique pour la santé

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *