diff --git a/DOCKER.md b/DOCKER.md deleted file mode 100644 index efb4b73..0000000 --- a/DOCKER.md +++ /dev/null @@ -1,93 +0,0 @@ -# Guide d'utilisation de Docker avec Managerr - -Ce document explique comment utiliser Docker pour exécuter l'application Managerr. - -## Prérequis - -- Docker installé sur votre machine -- Docker Compose installé sur votre machine - -## Commandes de base - -### Démarrage standard - -```bash -./docker-manage.sh start -``` - -Cette commande démarre tous les services (MongoDB, backend et frontend) avec la configuration standard qui inclut des healthchecks pour s'assurer que MongoDB est prêt avant de démarrer le backend. - -### Démarrage simplifié (en cas de problème) - -Si vous rencontrez l'erreur "dependency failed to start: container managerr-mongodb is unhealthy", utilisez cette commande : - -```bash -./docker-manage.sh start:simple -``` - -Cette commande utilise une configuration simplifiée sans healthcheck, ce qui peut résoudre les problèmes de démarrage. - -### Arrêt des services - -```bash -./docker-manage.sh stop -``` - -### Afficher l'état des services - -```bash -./docker-manage.sh status -``` - -### Afficher les logs - -```bash -# Tous les services -./docker-manage.sh logs - -# Seulement le frontend -./docker-manage.sh logs:front - -# Seulement le backend -./docker-manage.sh logs:back - -# Seulement MongoDB -./docker-manage.sh logs:db -``` - -## Résolution des problèmes - -### Erreur : "dependency failed to start: container managerr-mongodb is unhealthy" - -Cette erreur se produit généralement lorsque le healthcheck de MongoDB échoue. Plusieurs solutions sont possibles : - -1. Utilisez la commande de démarrage simplifiée : - ```bash - ./docker-manage.sh start:simple - ``` - -2. Si vous avez déjà essayé de démarrer les conteneurs, nettoyez d'abord : - ```bash - docker-compose down - ``` - -3. Si le problème persiste, vérifiez les logs de MongoDB : - ```bash - docker logs managerr-mongodb - ``` - -4. Assurez-vous que le port 27017 est libre sur votre machine : - ```bash - sudo lsof -i :27017 - ``` - Si un autre service utilise ce port, arrêtez-le ou modifiez le port dans docker-compose.yml. - -### Problème de connexion depuis le backend vers MongoDB - -Si le backend ne parvient pas à se connecter à MongoDB, vérifiez que l'URL de connexion est correcte dans le fichier `.env` du backend et dans docker-compose.yml. Dans le contexte Docker, l'URL doit être : - -``` -mongodb://root:rootpassword@mongodb:27017/managerr?authSource=admin -``` - -Notez que l'hôte est `mongodb` (le nom du service dans docker-compose.yml) et non `localhost`. diff --git a/docker-compose.simple.yml b/docker-compose.simple.yml deleted file mode 100644 index 7b56720..0000000 --- a/docker-compose.simple.yml +++ /dev/null @@ -1,70 +0,0 @@ -version: '3.8' - -services: - # Service MongoDB - mongodb: - image: mongo:latest - container_name: managerr-mongodb - restart: unless-stopped - volumes: - - mongodb-data:/data/db - environment: - - MONGO_INITDB_ROOT_USERNAME=root - - MONGO_INITDB_ROOT_PASSWORD=rootpassword - - MONGO_INITDB_DATABASE=managerr - ports: - - "27017:27017" - networks: - - managerr-network - - # Service Backend - backend: - build: - context: ./backend - dockerfile: Dockerfile - container_name: managerr-backend - restart: unless-stopped - depends_on: - - mongodb - environment: - - NODE_ENV=development - - PORT=5000 - - MONGODB_URI=mongodb://root:rootpassword@mongodb:27017/managerr?authSource=admin - - JWT_SECRET=secret_jwt_pour_managerr - ports: - - "5000:5000" - volumes: - - ./backend:/app - - /app/node_modules - networks: - - managerr-network - - # Service Frontend - frontend: - build: - context: ./frontend - dockerfile: Dockerfile - container_name: managerr-frontend - restart: unless-stopped - depends_on: - - backend - environment: - - NODE_ENV=development - - VUE_APP_API_URL=http://localhost:5000/api - ports: - - "8012:8012" - volumes: - - ./frontend:/app - - /app/node_modules - networks: - - managerr-network - -# Volumes -volumes: - mongodb-data: - driver: local - -# Networks -networks: - managerr-network: - driver: bridge diff --git a/docker-compose.yml b/docker-compose.yml index c12bf0e..5b6ca98 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,7 @@ -version: '3.8' - services: - # Service MongoDB + # Service MongoDB sans healthcheck personnalisé mongodb: - build: - context: ./mongodb - dockerfile: Dockerfile + image: mongo:latest container_name: managerr-mongodb restart: unless-stopped volumes: @@ -18,8 +14,15 @@ services: - "27017:27017" networks: - managerr-network + # Healthcheck simple intégré (utilisera les commandes disponibles dans l'image) + healthcheck: + test: echo 'db.runCommand("ping").ok' | mongosh mongodb://localhost:27017/test --quiet || exit 1 + interval: 10s + timeout: 10s + retries: 5 + start_period: 30s - # Service Backend + # Service Backend avec script d'attente backend: build: context: ./backend @@ -27,8 +30,7 @@ services: container_name: managerr-backend restart: unless-stopped depends_on: - mongodb: - condition: service_healthy + - mongodb environment: - NODE_ENV=development - PORT=5000 diff --git a/docker-manage.sh b/docker-manage.sh deleted file mode 100755 index 68b5c01..0000000 --- a/docker-manage.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/bash -# Script pour gérer les conteneurs Docker de l'application Managerr - -# Fonction d'aide -show_help() { - echo "Usage: $0 [option]" - echo "Options:" - echo " start - Démarre tous les services avec la configuration standard" - echo " start:simple - Démarre tous les services avec la configuration simplifiée (sans healthcheck)" - echo " stop - Arrête tous les services" - echo " restart - Redémarre tous les services" - echo " status - Affiche l'état des services" - echo " logs - Affiche les logs de tous les services" - echo " logs:front - Affiche les logs du frontend" - echo " logs:back - Affiche les logs du backend" - echo " logs:db - Affiche les logs de la base de données" - echo " build - Reconstruit les images Docker" - echo " help - Affiche cette aide" -} - -# Si aucun argument n'est fourni, afficher l'aide -if [ $# -eq 0 ]; then - show_help - exit 1 -fi - -# Traitement des options -case "$1" in - start) - echo "Démarrage des services..." - docker-compose up -d - echo "Services démarrés ! L'application est accessible sur http://localhost:8012" - ;; - start:simple) - echo "Démarrage des services avec la configuration simplifiée..." - docker-compose -f docker-compose.simple.yml up -d - echo "Services démarrés ! L'application est accessible sur http://localhost:8012" - echo "Note: Cette configuration n'utilise pas de healthcheck pour MongoDB." - ;; - stop) - echo "Arrêt des services..." - docker-compose down - echo "Services arrêtés." - ;; - restart) - echo "Redémarrage des services..." - docker-compose down - docker-compose up -d - echo "Services redémarrés ! L'application est accessible sur http://localhost:8012" - ;; - status) - echo "État des services:" - docker-compose ps - ;; - logs) - docker-compose logs -f - ;; - logs:front) - docker-compose logs -f frontend - ;; - logs:back) - docker-compose logs -f backend - ;; - logs:db) - docker-compose logs -f mongodb - ;; - build) - echo "Reconstruction des images Docker..." - docker-compose build - echo "Images reconstruites." - ;; - help) - show_help - ;; - *) - echo "Option non reconnue: $1" - show_help - exit 1 - ;; -esac diff --git a/mongodb/Dockerfile b/mongodb/Dockerfile deleted file mode 100644 index 52741ef..0000000 --- a/mongodb/Dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM mongo:latest - -# Installation d'outils pour le healthcheck -RUN apt-get update && apt-get install -y --no-install-recommends \ - netcat \ - && rm -rf /var/lib/apt/lists/* - -# Script de healthcheck -COPY healthcheck.sh /healthcheck.sh -RUN chmod +x /healthcheck.sh - -HEALTHCHECK --interval=10s --timeout=10s --start-period=30s --retries=5 \ - CMD ["/healthcheck.sh"] - -EXPOSE 27017 diff --git a/mongodb/healthcheck.sh b/mongodb/healthcheck.sh deleted file mode 100644 index 362f32a..0000000 --- a/mongodb/healthcheck.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# healthcheck.sh pour MongoDB - -# Attente que le port MongoDB soit ouvert -nc -z localhost 27017 || exit 1 - -# Ping MongoDB pour confirmer qu'il fonctionne -mongo --quiet --eval "db.adminCommand('ping')" || exit 1 - -exit 0 diff --git a/start.sh b/start.sh deleted file mode 100755 index a52c710..0000000 --- a/start.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# Script pour démarrer l'application Managerr (backend et frontend) - -# Fonction pour arrêter proprement les processus à la sortie -cleanup() { - echo "Arrêt des serveurs..." - kill $BACKEND_PID $FRONTEND_PID 2>/dev/null - exit -} - -# Capture des signaux pour arrêter proprement -trap cleanup SIGINT SIGTERM - -# Vérification de l'existence des répertoires -if [ ! -d "./backend" ] || [ ! -d "./frontend" ]; then - echo "Erreur: Les répertoires backend et frontend doivent exister dans le répertoire courant." - exit 1 -fi - -# Démarrage du backend -echo "Démarrage du serveur backend..." -cd backend -npm run dev & -BACKEND_PID=$! -cd .. - -# Vérification que le backend a démarré correctement -sleep 2 -if ! kill -0 $BACKEND_PID 2>/dev/null; then - echo "Erreur: Le serveur backend n'a pas pu démarrer." - exit 1 -fi - -# Démarrage du frontend -echo "Démarrage du serveur frontend..." -cd frontend -npm run serve & -FRONTEND_PID=$! - -# Attente que les deux processus se terminent -wait $BACKEND_PID $FRONTEND_PID