Retour aux articles

Dockerisation d'une application Java Spring Boot et Angular pour le développement et la production

Dockerisation d'une application Java Spring Boot et Angular pour le développement et la production | Laty Gueye Samba - Développeur Full Stack Dakar Sénégal, Expert Java Spring Boot Angular

Le développement d'applications modernes, notamment celles construites avec des piles technologiques telles que Java Spring Boot pour le backend et Angular pour le frontend, nécessite une gestion efficace des environnements. La cohérence entre les environnements de développement, de test et de production est un défi constant. C'est là que Docker intervient, offrant une solution puissante pour empaqueter les applications et leurs dépendances dans des conteneurs isolés et portables. La dockerisation permet aux développeurs de se concentrer sur le code, tout en garantissant que l'application s'exécute de manière identique partout.

L'adoption de Docker par des développeurs Full Stack, tels que Laty Gueye Samba, développeur Full Stack basé à Dakar, expert en Java Spring Boot et Angular, est devenue une pratique standard. Elle simplifie considérablement le déploiement Docker et la gestion des applications complexes, des projets de gestion hospitalière aux applications de gestion des risques. Cet article technique explore les étapes et les bonnes pratiques pour la dockerisation d'une application Spring Boot et Angular, de la phase de développement jusqu'à la production, en mettant en lumière les bénéfices de cette approche pour un environnement Full Stack.

La maîtrise de la dockerisation pour une architecture Docker Spring Boot Angular est un atout majeur pour tout développeur souhaitant optimiser son flux de travail et la fiabilité de ses déploiements. Elle garantit que l'application fonctionnera sans surprise, peu importe l'infrastructure sous-jacente, ce qui est crucial pour des applications métier complexes déployées dans divers contextes.

Dockerisation du Backend Java Spring Boot

Pour le backend Java Spring Boot, la création d'une image Docker robuste et optimisée est essentielle. Il est fortement recommandé d'utiliser une approche de build multi-étapes pour réduire la taille de l'image finale, en séparant l'environnement de compilation de l'environnement d'exécution. Cela permet d'inclure uniquement les fichiers nécessaires à l'exécution de l'application.

Voici un exemple de Dockerfile pour une application Spring Boot. Ce fichier utilise le JDK pour la compilation et un JRE pour l'exécution, minimisant ainsi l'empreinte de l'image finale.


# Étape 1 : Build de l'application
FROM openjdk:17-jdk-slim AS build
WORKDIR /app
COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .
COPY src src
RUN ./mvnw package -DskipTests

# Étape 2 : Exécution de l'application
FROM openjdk:17-jre-slim
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

Ce Dockerfile compile l'application Spring Boot dans la première étape, puis copie l'artefact JAR résultant dans une nouvelle image plus légère basée sur un JRE. L'application écoutera sur le port 8080. Pour le développement, il peut être utile de monter des volumes pour un rechargement à chaud ou d'exposer des ports supplémentaires pour le débogage, mais pour la production, cette configuration est un excellent point de départ.

Dockerisation du Frontend Angular

La dockerisation d'une application Angular suit une logique similaire, exploitant les builds multi-étapes pour obtenir une image de production optimisée. Le processus implique la compilation du projet Angular, puis la mise à disposition des fichiers statiques résultants via un serveur web léger comme Nginx.

Un Dockerfile pour Angular peut ressembler à ceci :


# Étape 1 : Build de l'application Angular
FROM node:18-alpine AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build --configuration=production

# Étape 2 : Serveur Nginx pour les fichiers statiques
FROM nginx:alpine
COPY --from=build /app/dist/votre-app-angular /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Dans cet exemple, l'application Angular est d'abord construite dans une image basée sur Node.js. Ensuite, les fichiers statiques générés (dans le répertoire dist/votre-app-angular) sont copiés dans une image Nginx. Ce serveur web est léger et performant, idéal pour servir des applications frontend en production. L'application sera accessible sur le port 80 du conteneur.

Orchestration avec Docker Compose pour le développement et la production

Pour une application Full Stack composée d'un backend Spring Boot et d'un frontend Angular, ainsi que d'une base de données, Docker Compose est l'outil privilégié pour définir et exécuter l'ensemble de l'architecture. Il permet de déclarer tous les services, leurs réseaux et volumes dans un seul fichier docker-compose.yml.

Un exemple de docker-compose.yml pour une configuration de développement pourrait inclure des volumes montés pour le développement en direct et des bases de données comme PostgreSQL :


version: '3.8'
services:
  backend:
    build:
      context: ./backend # Chemin vers le dossier de l'application Spring Boot
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/mydatabase
      SPRING_DATASOURCE_USERNAME: user
      SPRING_DATASOURCE_PASSWORD: password
    depends_on:
      - db
    volumes:
      - ./backend/src:/app/src # Pour le rechargement à chaud si configuré

  frontend:
    build:
      context: ./frontend # Chemin vers le dossier de l'application Angular
      dockerfile: Dockerfile
    ports:
      - "4200:80" # Ou 4200:4200 si vous utilisez le serveur de développement Angular
    depends_on:
      - backend
    volumes:
      - ./frontend:/app # Pour le développement en direct d'Angular

  db:
    image: postgres:13-alpine
    environment:
      POSTGRES_DB: mydatabase
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

Pour la production, le docker-compose.yml serait similaire, mais avec des optimisations telles que l'utilisation d'images déjà construites, des configurations réseau plus robustes et potentiellement des outils de gestion de secrets. Par exemple, le port du frontend pourrait être le 80 ou le 443 derrière un reverse proxy, et les volumes pour le développement en direct seraient supprimés. Il est également recommandé d'utiliser des variables d'environnement pour les identifiants sensibles.

Point de vue : développeur full stack à Dakar

Pour un développeur travaillant sur des systèmes comme des plateformes de gestion de ressources ou des portails clients, la maîtrise de la dockerisation des applications Full Stack représente un avantage concurrentiel réel sur le marché technologique africain, en pleine expansion. Laty Gueye Samba, Développeur Full Stack à Dakar, expert en Java Spring Boot et Angular, souligne régulièrement que cette compétence est désormais indispensable pour le déploiement Docker moderne et l'intégration continue, garantissant ainsi l'agilité et la robustesse des solutions.

Conclusion

La dockerisation d'une application Java Spring Boot et Angular offre une méthode standardisée et efficace pour gérer les environnements de développement et de production. Elle élimine les problèmes de "ça marche sur ma machine", accélère le déploiement Docker et améliore la collaboration au sein des équipes de développement. Pour un Développeur Full Stack Dakar Sénégal comme Laty Gueye Samba, expert en cette pile technologique, cette approche est fondamentale pour la livraison de projets de qualité, qu'il s'agisse de systèmes ERP ou d'applications complexes.

En adoptant ces pratiques, les développeurs peuvent s'assurer que leurs applications Spring Boot Angular sont cohérentes, portables et faciles à déployer. L'investissement dans l'apprentissage de Docker et Docker Compose est rapidement amorti par les gains en productivité et la fiabilité accrue des applications.

Pour approfondir vos connaissances, il est vivement recommandé de consulter les documentations officielles :

À propos de l'auteur

Laty Gueye Samba est développeur Full Stack basé à Dakar, Sénégal. Spécialiste des écosystèmes Java / Spring Boot et Angular.

Contact : latygueyesamba@gmail.com  |  Dakar, Sénégal