Une API RESTful pour la gestion d'items utilisant Express.js et MongoDB. Ce projet fournit un service backend simple et conteneurisé qui permet la création et la récupération d'items.
Cette API fournit des points d'accès pour gérer des items avec des propriétés telles que le nom, la description et le prix. L'application est dockerisée pour un déploiement facile et utilise un pipeline CI/CD pour les builds automatisés.
- Fonctionnalités
- Stack Technique
- Structure du Projet
- Variables d'Environnement
- Mise en Route
- Points d'Accès API
- Configuration Docker
- Pipeline CI/CD
- Développement
- Contributeurs
- API RESTful pour la gestion d'items
- Intégration MongoDB pour la persistance des données
- Conteneurisation Docker
- Pipeline CI/CD avec GitHub Actions
- Configuration par variables d'environnement
- Backend: Node.js, Express.js
- Base de données: MongoDB
- Conteneurisation: Docker, Docker Compose
- CI/CD: GitHub Actions
.
├── app.js # Point d'entrée principal de l'application
├── package.json # Dépendances et scripts du projet
├── docker-compose.yml # Configuration Docker Compose
├── Dockerfile # Instructions de build Docker
├── .github/workflows # Fichiers de workflow GitHub Actions
├── database
│ └── db.js # Configuration de connexion à la base de données
├── models
│ └── item.js # Modèle de données pour les items
├── routes
│ └── items.js # Routes pour les items
└── middleware
└── validationItem.js # Middleware de validation
Créez un fichier .env dans le répertoire racine avec les variables suivantes:
DB_HOST=mongodb
DB_PORT=27017
DB_DATABASE=itemsdb
DB_USERNAME=root
DB_PASSWORD=example
PORT=8081
- Node.js (v16 ou supérieur)
- Docker et Docker Compose
- MongoDB (si exécution locale sans Docker)
-
Clonez le dépôt:
git clone https://github.com/mathieusouflis/TP-CI-CD.git cd TP-CI-CD -
Installez les dépendances:
npm install -
Démarrez l'application avec Docker Compose:
docker-compose up -d -
Ou démarrez sans Docker (nécessite MongoDB en local):
npm start
- URL:
/items - Méthode:
GET - Réponse: Tableau d'objets item
- URL:
/items - Méthode:
POST - Corps:
{ "name": "Nom de l'item", "description": "Description de l'item", "price": 19.99 } - Réponse: Objet item créé
Le projet inclut Docker Compose pour un déploiement facile:
# Démarrer les conteneurs
docker-compose up -d
# Voir les logs
docker-compose logs -f
# Arrêter les conteneurs
docker-compose downLa configuration Docker Compose comprend:
- Un conteneur MongoDB
- Un conteneur API Node.js
- Un volume persistant pour les données MongoDB
- Configuration réseau pour la communication entre conteneurs
Le projet utilise GitHub Actions pour le CI/CD:
- Construit l'image Docker lors d'un push ou d'une PR fusionnée sur main
- Pousse l'image sur Docker Hub
- Utilise des secrets pour l'authentification Docker Hub
Secrets GitHub requis:
DOCKERHUB_USERNAME: Votre nom d'utilisateur Docker HubDOCKERHUB_TOKEN: Votre token d'accès Docker Hub
Pour le développement local:
# Exécuter en mode développement avec nodemon
npm run start-dev- SOUFLIS Mathieu
- ELATTAR Loaï
- MENDY BELGHAZI Ryan-ilies Gabriel
- MATHÉ Cyril
- SORRENTINO Jules