docker
This commit is contained in:
parent
1f4193f9c0
commit
a49db6e4ae
9 changed files with 228 additions and 18 deletions
93
DOCKER.md
Normal file
93
DOCKER.md
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
# 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`.
|
||||
|
|
@ -123,6 +123,9 @@ L'application peut également être exécutée dans des conteneurs Docker, ce qu
|
|||
# Démarrer tous les services (MongoDB, backend et frontend)
|
||||
./docker-manage.sh start
|
||||
|
||||
# En cas d'erreur, utilisez la version simplifiée
|
||||
./docker-manage.sh start:simple
|
||||
|
||||
# Afficher l'état des services
|
||||
./docker-manage.sh status
|
||||
|
||||
|
|
@ -135,6 +138,8 @@ L'application peut également être exécutée dans des conteneurs Docker, ce qu
|
|||
|
||||
L'application sera accessible à l'adresse : http://localhost:8012
|
||||
|
||||
Pour plus d'informations sur l'utilisation avec Docker et la résolution des problèmes, consultez le fichier [DOCKER.md](DOCKER.md).
|
||||
|
||||
## Déploiement
|
||||
|
||||
### Backend
|
||||
|
|
|
|||
|
|
@ -14,5 +14,9 @@ COPY . .
|
|||
# Expose port 5000
|
||||
EXPOSE 5000
|
||||
|
||||
# Start the application
|
||||
CMD ["npm", "run", "dev"]
|
||||
# Add wait-for script
|
||||
COPY wait-for-mongodb.sh /wait-for-mongodb.sh
|
||||
RUN chmod +x /wait-for-mongodb.sh
|
||||
|
||||
# Start the application with wait script
|
||||
CMD ["/wait-for-mongodb.sh", "npm", "run", "dev"]
|
||||
|
|
|
|||
9
backend/wait-for-mongodb.sh
Normal file
9
backend/wait-for-mongodb.sh
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#!/bin/sh
|
||||
# wait-for-mongodb.sh
|
||||
|
||||
set -e
|
||||
|
||||
echo "Attente de MongoDB..."
|
||||
sleep 10 # Attente simple pour s'assurer que MongoDB a démarré
|
||||
echo "Démarrage de l'application backend..."
|
||||
exec "$@"
|
||||
70
docker-compose.simple.yml
Normal file
70
docker-compose.simple.yml
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
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
|
||||
|
|
@ -3,7 +3,9 @@ version: '3.8'
|
|||
services:
|
||||
# Service MongoDB
|
||||
mongodb:
|
||||
image: mongo:latest
|
||||
build:
|
||||
context: ./mongodb
|
||||
dockerfile: Dockerfile
|
||||
container_name: managerr-mongodb
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
|
|
@ -16,11 +18,6 @@ services:
|
|||
- "27017:27017"
|
||||
networks:
|
||||
- managerr-network
|
||||
healthcheck:
|
||||
test: ["CMD", "mongo", "--eval", "db.adminCommand('ping')"]
|
||||
interval: 10s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
|
||||
# Service Backend
|
||||
backend:
|
||||
|
|
|
|||
|
|
@ -5,7 +5,8 @@
|
|||
show_help() {
|
||||
echo "Usage: $0 [option]"
|
||||
echo "Options:"
|
||||
echo " start - Démarre tous les services"
|
||||
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"
|
||||
|
|
@ -30,6 +31,12 @@ case "$1" in
|
|||
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
|
||||
|
|
|
|||
15
mongodb/Dockerfile
Normal file
15
mongodb/Dockerfile
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
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
|
||||
10
mongodb/healthcheck.sh
Normal file
10
mongodb/healthcheck.sh
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
#!/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
|
||||
Loading…
Add table
Add a link
Reference in a new issue