Skip to content

Develop a complete infrastructure with static and dynamic Web servers, running on docker-compose

Notifications You must be signed in to change notification settings

Kalysso/dai-lab-http-infrastructure

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DAI Lab - HTTP infrastructure

Objectifs

Le principal objectif de ce laboratoire est d'apprendre à construire une infrastructure Web complète. Cela implique la mise en place d'une infrastructure de serveurs qui hébergeront un site Web statique et une API HTTP dynamique.

Mise en place de l'image Docker

Notre objectif était de construire une image Docker avec un serveur HTTP statique Nginx pour héberger un site Web statique. Nous avons créé un répertoire spécifique nommé static_web dans notre référentiel GitHub pour ce serveur, dans lequel nous avons également déposé le Dockerfile et le fichier de configuration nginx.conf.

docker build -t static_web:latest ./static_web
docker run -p 8080:80 static_web:latest
http://localhost:8080

Le bloc de configuration dans le fichier nginx.conf constitue la définition du serveur HTTP Nginx. Il établit les paramètres essentiels pour traiter les requêtes entrantes.

En premier lieu, la directive listen 80; spécifie que le serveur Nginx doit écouter les requêtes HTTP entrantes sur le port 80. C'est le port standard pour les requêtes HTTP non sécurisées.

Ensuite, la directive location / {...} définit le comportement du serveur pour les requêtes reçues. Dans ce cas, toute requête entrante sera traitée par cette configuration.

Le chemin root /usr/share/nginx/html; indique à Nginx où trouver les fichiers à servir. Ici, le serveur est configuré pour envoyer les fichiers du répertoire /usr/share/nginx/html en réponse à ces requêtes. Enfin, index index.html; spécifie que si le fichier index.html est présent dans ce répertoire, il sera utilisé comme fichier par défaut pour répondre à la requête.

Afin d'afficher correctement les fichiers .css, il a fallu ajouter la ligne include mime.types; dans le fichier nginx.conf.

Lors de cette phase de notre projet, nous avons intégré Docker Compose pour simplifier le déploiement et la gestion de notre infrastructure conteneurisée. Nous avons établi un fichier de configuration docker-compose.yml pour orchestrer le déploiement de nos services.

docker compose build
docker compose up
http://localhost:80

Ce fichier de configuration docker-compose.yml utilise la version 3 de Docker Compose pour déployer un service. Il spécifie la construction d'une image à partir du répertoire ./static_web via l'instruction build. De plus, il relie le port 1234 de l'hôte au port 80 du conteneur, permettant ainsi aux requêtes entrantes sur le port 1234 de l'hôte d'être redirigées vers le port 80 du conteneur où le service sera accessible.

Mise en place de l'API

Pour intégrer correctement le fichier pom.xml à la racine du projet, veuillez suivre ces étapes. Si le fichier n'est pas déjà à la racine, assurez-vous de l'y placer. Ensuite, pour afficher le projet dans les onglets dédiés à Maven sur la droite de votre environnement de développement, sélectionnez "Ajouter le projet Maven" depuis la notification située en bas à droite de votre IDE.

Pour lancer Maven, naviguez vers lifecycle puis sélectionnez validate, ou bien exécutez directement mvn validate dans la console.

Si vous observez des classes affichant un petit J orange, assurez-vous que Java est correctement défini comme source. Pour cela, faites un clic droit sur le dossier contenant les classes, puis sélectionnez Mark Directory as et choisissez Sources Root. Si un bogue survient, assurez-vous que le port spécifié n'est pas déjà utilisé.

Une fois ces étapes complétées, vous pourrez accéder à votre application via http://localhost:8000/api/constellations

Nous avons suivi la vidéo YouTube https://www.youtube.com/watch?v=b_ctmKlEOXg pour l'utilisation de bruno. Les exemples sont disponibles dans le répertoire figures


Nous avons utilisé Docker Compose pour configurer Traefik en tant que reverse proxy pour rediriger le trafic vers nos services statique_web et reverse_proxy.

Service Web Statique

Le service web a été configuré pour gérer le serveur web statique via Traefik. Voici les détails de la configuration :

Construction de l'image : Utilisation du chemin ./static_web pour construire l'image.
Ports : expose le port 80 Volumes : Montage du répertoire ./serveur pour le contenu statique du serveur.
Déploiement : Un seul conteneur est déployé avec replicas: 1.
Étiquettes Traefik : Activation de Traefik pour ce service web et définition de la règle de routage Traefik pour le serveur web statique.

Reverse Proxy

Le service reverse_proxy utilise l'image Docker officielle de Traefik pour gérer le reverse proxy. Voici les détails de la configuration :

Image : Utilisation de l'image Traefik v2.6.
Commande : Configuration de Traefik avec les options nécessaires pour l'activation du tableau de bord et la gestion des services Docker.
Ports : Mappage du port 80 du conteneur Traefik au port 80 de l'hôte pour recevoir le trafic entrant et du port 8080 pour accéder au dashboard de Traefik.

docker-compose up -d reverse_proxy
docker-compose up
http://localhost:8080/dashboard

About

Develop a complete infrastructure with static and dynamic Web servers, running on docker-compose

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 72.8%
  • CSS 13.9%
  • HTML 10.4%
  • Java 2.4%
  • Dockerfile 0.5%