docker
This commit is contained in:
parent
a49db6e4ae
commit
b91b7c5b88
7 changed files with 11 additions and 318 deletions
93
DOCKER.md
93
DOCKER.md
|
|
@ -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`.
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
version: '3.8'
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# Service MongoDB
|
# Service MongoDB sans healthcheck personnalisé
|
||||||
mongodb:
|
mongodb:
|
||||||
build:
|
image: mongo:latest
|
||||||
context: ./mongodb
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
container_name: managerr-mongodb
|
container_name: managerr-mongodb
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
volumes:
|
volumes:
|
||||||
|
|
@ -18,8 +14,15 @@ services:
|
||||||
- "27017:27017"
|
- "27017:27017"
|
||||||
networks:
|
networks:
|
||||||
- managerr-network
|
- 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:
|
backend:
|
||||||
build:
|
build:
|
||||||
context: ./backend
|
context: ./backend
|
||||||
|
|
@ -27,8 +30,7 @@ services:
|
||||||
container_name: managerr-backend
|
container_name: managerr-backend
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
mongodb:
|
- mongodb
|
||||||
condition: service_healthy
|
|
||||||
environment:
|
environment:
|
||||||
- NODE_ENV=development
|
- NODE_ENV=development
|
||||||
- PORT=5000
|
- PORT=5000
|
||||||
|
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
|
|
@ -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
|
|
||||||
41
start.sh
41
start.sh
|
|
@ -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
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue