dockerisation
This commit is contained in:
parent
70c5f754c5
commit
ace492f665
@ -27,6 +27,16 @@ nano .env.production # Éditez avec vos valeurs
|
||||
|
||||
Créez un fichier `.env.production` avec toutes les variables nécessaires :
|
||||
|
||||
```bash
|
||||
# Copier le fichier d'exemple
|
||||
cp env.production.example .env.production
|
||||
|
||||
# Éditer avec vos valeurs
|
||||
nano .env.production
|
||||
```
|
||||
|
||||
**Important** : Toutes les commandes `docker-compose` doivent utiliser `--env-file .env.production` pour charger les variables.
|
||||
|
||||
```env
|
||||
# Database
|
||||
POSTGRES_USER=neah_user
|
||||
@ -58,22 +68,22 @@ NODE_ENV=production
|
||||
|
||||
```bash
|
||||
# Build l'image Docker
|
||||
docker-compose -f docker-compose.prod.yml build
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production build
|
||||
|
||||
# Démarrer les services (base de données et Redis)
|
||||
docker-compose -f docker-compose.prod.yml up -d db redis
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production up -d db redis
|
||||
|
||||
# Attendre que les services soient prêts (environ 10 secondes)
|
||||
sleep 10
|
||||
|
||||
# Appliquer les migrations Prisma
|
||||
docker-compose -f docker-compose.prod.yml run --rm app npx prisma migrate deploy
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate deploy
|
||||
|
||||
# Démarrer l'application
|
||||
docker-compose -f docker-compose.prod.yml up -d app
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production up -d app
|
||||
|
||||
# Vérifier les logs
|
||||
docker-compose -f docker-compose.prod.yml logs -f app
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production logs -f app
|
||||
```
|
||||
|
||||
## 🔧 Configuration Avancée
|
||||
@ -123,10 +133,10 @@ Pour sauvegarder :
|
||||
|
||||
```bash
|
||||
# Sauvegarder PostgreSQL
|
||||
docker exec neah-postgres-prod pg_dump -U neah_user calendar_db > backup.sql
|
||||
docker exec neah-postgres-prod pg_dump -U ${POSTGRES_USER:-neah_user} ${POSTGRES_DB:-calendar_db} > backup.sql
|
||||
|
||||
# Restaurer PostgreSQL
|
||||
docker exec -i neah-postgres-prod psql -U neah_user calendar_db < backup.sql
|
||||
docker exec -i neah-postgres-prod psql -U ${POSTGRES_USER:-neah_user} ${POSTGRES_DB:-calendar_db} < backup.sql
|
||||
```
|
||||
|
||||
## 🔄 Mises à jour
|
||||
@ -135,26 +145,26 @@ docker exec -i neah-postgres-prod psql -U neah_user calendar_db < backup.sql
|
||||
|
||||
```bash
|
||||
# Arrêter l'application
|
||||
docker-compose -f docker-compose.prod.yml stop app
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production stop app
|
||||
|
||||
# Rebuild l'image
|
||||
docker-compose -f docker-compose.prod.yml build app
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production build app
|
||||
|
||||
# Appliquer les migrations si nécessaire
|
||||
docker-compose -f docker-compose.prod.yml run --rm app npx prisma migrate deploy
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate deploy
|
||||
|
||||
# Redémarrer
|
||||
docker-compose -f docker-compose.prod.yml up -d app
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production up -d app
|
||||
```
|
||||
|
||||
### Appliquer les migrations Prisma
|
||||
|
||||
```bash
|
||||
# Vérifier le statut des migrations
|
||||
docker-compose -f docker-compose.prod.yml run --rm app npx prisma migrate status
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate status
|
||||
|
||||
# Appliquer les migrations
|
||||
docker-compose -f docker-compose.prod.yml run --rm app npx prisma migrate deploy
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate deploy
|
||||
```
|
||||
|
||||
## 📊 Monitoring et Logs
|
||||
@ -163,12 +173,12 @@ docker-compose -f docker-compose.prod.yml run --rm app npx prisma migrate deploy
|
||||
|
||||
```bash
|
||||
# Tous les services
|
||||
docker-compose -f docker-compose.prod.yml logs -f
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production logs -f
|
||||
|
||||
# Un service spécifique
|
||||
docker-compose -f docker-compose.prod.yml logs -f app
|
||||
docker-compose -f docker-compose.prod.yml logs -f db
|
||||
docker-compose -f docker-compose.prod.yml logs -f redis
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production logs -f app
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production logs -f db
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production logs -f redis
|
||||
```
|
||||
|
||||
### Health Check
|
||||
@ -241,30 +251,30 @@ server {
|
||||
|
||||
```bash
|
||||
# Vérifier les logs
|
||||
docker-compose -f docker-compose.prod.yml logs app
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production logs app
|
||||
|
||||
# Vérifier que les services dépendants sont démarrés
|
||||
docker-compose -f docker-compose.prod.yml ps
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production ps
|
||||
|
||||
# Vérifier la santé des services
|
||||
docker-compose -f docker-compose.prod.yml exec app curl http://localhost:3000/api/health
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production exec app curl http://localhost:3000/api/health
|
||||
```
|
||||
|
||||
### Problèmes de connexion à la base de données
|
||||
|
||||
```bash
|
||||
# Tester la connexion PostgreSQL
|
||||
docker-compose -f docker-compose.prod.yml exec db psql -U neah_user -d calendar_db -c "SELECT 1;"
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production exec db psql -U neah_user -d calendar_db -c "SELECT 1;"
|
||||
|
||||
# Vérifier les variables d'environnement
|
||||
docker-compose -f docker-compose.prod.yml exec app env | grep DATABASE
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production exec app env | grep DATABASE
|
||||
```
|
||||
|
||||
### Problèmes de connexion Redis
|
||||
|
||||
```bash
|
||||
# Tester Redis
|
||||
docker-compose -f docker-compose.prod.yml exec redis redis-cli -a VOTRE_MOT_DE_PASSE ping
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production exec redis redis-cli -a VOTRE_MOT_DE_PASSE ping
|
||||
```
|
||||
|
||||
### Rebuild complet
|
||||
@ -273,16 +283,16 @@ Si vous avez des problèmes persistants :
|
||||
|
||||
```bash
|
||||
# Arrêter tous les services
|
||||
docker-compose -f docker-compose.prod.yml down
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production down
|
||||
|
||||
# Supprimer les volumes (⚠️ PERDREZ LES DONNÉES)
|
||||
docker-compose -f docker-compose.prod.yml down -v
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production down -v
|
||||
|
||||
# Rebuild tout
|
||||
docker-compose -f docker-compose.prod.yml build --no-cache
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production build --no-cache
|
||||
|
||||
# Redémarrer
|
||||
docker-compose -f docker-compose.prod.yml up -d
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production up -d
|
||||
```
|
||||
|
||||
## 📦 Sauvegardes
|
||||
|
||||
@ -24,11 +24,11 @@ nano .env.production
|
||||
./scripts/deploy-prod.sh
|
||||
|
||||
# Option B: Commandes manuelles
|
||||
docker-compose -f docker-compose.prod.yml build
|
||||
docker-compose -f docker-compose.prod.yml up -d db redis
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production build
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production up -d db redis
|
||||
sleep 15
|
||||
docker-compose -f docker-compose.prod.yml run --rm app npx prisma migrate deploy
|
||||
docker-compose -f docker-compose.prod.yml up -d app
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate deploy
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production up -d app
|
||||
```
|
||||
|
||||
### 3. Vérifier
|
||||
@ -45,19 +45,19 @@ docker-compose -f docker-compose.prod.yml logs -f app
|
||||
|
||||
```bash
|
||||
# Arrêter
|
||||
docker-compose -f docker-compose.prod.yml down
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production down
|
||||
|
||||
# Redémarrer
|
||||
docker-compose -f docker-compose.prod.yml restart app
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production restart app
|
||||
|
||||
# Voir les logs
|
||||
docker-compose -f docker-compose.prod.yml logs -f
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production logs -f
|
||||
|
||||
# Appliquer les migrations
|
||||
docker-compose -f docker-compose.prod.yml run --rm app npx prisma migrate deploy
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate deploy
|
||||
|
||||
# Accéder à la base de données
|
||||
docker-compose -f docker-compose.prod.yml exec db psql -U neah_user -d calendar_db
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production exec db psql -U neah_user -d calendar_db
|
||||
```
|
||||
|
||||
## 📖 Documentation complète
|
||||
|
||||
@ -140,11 +140,11 @@ services:
|
||||
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET:-CHANGE_ME_IN_PRODUCTION}
|
||||
|
||||
# Keycloak
|
||||
KEYCLOAK_ISSUER: ${KEYCLOAK_ISSUER}
|
||||
KEYCLOAK_CLIENT_ID: ${KEYCLOAK_CLIENT_ID}
|
||||
KEYCLOAK_CLIENT_SECRET: ${KEYCLOAK_CLIENT_SECRET}
|
||||
KEYCLOAK_REALM: ${KEYCLOAK_REALM}
|
||||
NEXT_PUBLIC_KEYCLOAK_ISSUER: ${NEXT_PUBLIC_KEYCLOAK_ISSUER}
|
||||
KEYCLOAK_ISSUER: ${KEYCLOAK_ISSUER:-}
|
||||
KEYCLOAK_CLIENT_ID: ${KEYCLOAK_CLIENT_ID:-}
|
||||
KEYCLOAK_CLIENT_SECRET: ${KEYCLOAK_CLIENT_SECRET:-}
|
||||
KEYCLOAK_REALM: ${KEYCLOAK_REALM:-}
|
||||
NEXT_PUBLIC_KEYCLOAK_ISSUER: ${NEXT_PUBLIC_KEYCLOAK_ISSUER:-}
|
||||
|
||||
# Node environment
|
||||
NODE_ENV: production
|
||||
@ -154,7 +154,7 @@ services:
|
||||
# MINIO_S3_UPLOAD_BUCKET_URL: ${MINIO_S3_UPLOAD_BUCKET_URL}
|
||||
# MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
|
||||
# MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
|
||||
volumes:
|
||||
# volumes:
|
||||
# Optionnel: monter des fichiers de configuration ou des uploads
|
||||
# - ./uploads:/app/uploads
|
||||
healthcheck:
|
||||
|
||||
55
env.example
Normal file
55
env.example
Normal file
@ -0,0 +1,55 @@
|
||||
# ============================================
|
||||
# Configuration Développement Neah
|
||||
# ============================================
|
||||
# Copiez ce fichier vers .env et remplissez les valeurs
|
||||
# ⚠️ NE COMMITEZ JAMAIS .env DANS GIT !
|
||||
|
||||
# ============================================
|
||||
# Base de données PostgreSQL
|
||||
# ============================================
|
||||
# Pour développement local avec Docker
|
||||
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/calendar_db?schema=public
|
||||
|
||||
# ============================================
|
||||
# Redis
|
||||
# ============================================
|
||||
REDIS_URL=redis://:mySecretPassword@localhost:6379
|
||||
|
||||
# ============================================
|
||||
# NextAuth
|
||||
# ============================================
|
||||
NEXTAUTH_URL=http://localhost:3000
|
||||
# Générez un secret avec: openssl rand -base64 32
|
||||
NEXTAUTH_SECRET=GENERER_UN_SECRET_TRES_LONG_ET_SECURISE
|
||||
|
||||
# ============================================
|
||||
# Keycloak
|
||||
# ============================================
|
||||
KEYCLOAK_ISSUER=https://connect.slm-lab.net/realms/cercle
|
||||
KEYCLOAK_CLIENT_ID=lab
|
||||
KEYCLOAK_CLIENT_SECRET=VOTRE_CLIENT_SECRET_KEYCLOAK
|
||||
KEYCLOAK_REALM=cercle
|
||||
NEXT_PUBLIC_KEYCLOAK_ISSUER=https://connect.slm-lab.net/realms/cercle
|
||||
|
||||
# ============================================
|
||||
# Application
|
||||
# ============================================
|
||||
NODE_ENV=development
|
||||
NEXT_TELEMETRY_DISABLED=1
|
||||
|
||||
# ============================================
|
||||
# MinIO / S3 (si utilisé)
|
||||
# ============================================
|
||||
# MINIO_S3_UPLOAD_BUCKET_URL=http://localhost:9000
|
||||
# MINIO_AWS_REGION=us-east-1
|
||||
# MINIO_AWS_S3_UPLOAD_BUCKET_NAME=missions
|
||||
# MINIO_ACCESS_KEY=minioadmin
|
||||
# MINIO_SECRET_KEY=minioadmin
|
||||
|
||||
# ============================================
|
||||
# Autres services (ajoutez selon vos besoins)
|
||||
# ============================================
|
||||
# LEANTIME_API_URL=https://leantime.example.com/api
|
||||
# LEANTIME_TOKEN=votre_token
|
||||
# N8N_API_KEY=votre_api_key
|
||||
# N8N_WEBHOOK_URL=https://brain.slm-lab.net/webhook/mission-created
|
||||
@ -31,34 +31,34 @@ fi
|
||||
export $(cat .env.production | grep -v '^#' | xargs)
|
||||
|
||||
echo "📦 Build de l'image Docker..."
|
||||
docker-compose -f docker-compose.prod.yml build --no-cache app
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production build --no-cache app
|
||||
|
||||
echo "🔄 Démarrage des services de base (PostgreSQL, Redis)..."
|
||||
docker-compose -f docker-compose.prod.yml up -d db redis
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production up -d db redis
|
||||
|
||||
echo "⏳ Attente que les services soient prêts (15 secondes)..."
|
||||
sleep 15
|
||||
|
||||
echo "🔍 Vérification de la santé des services..."
|
||||
# Vérifier PostgreSQL
|
||||
if ! docker-compose -f docker-compose.prod.yml exec -T db pg_isready -U ${POSTGRES_USER:-neah_user} > /dev/null 2>&1; then
|
||||
if ! docker-compose -f docker-compose.prod.yml --env-file .env.production exec -T db pg_isready -U ${POSTGRES_USER:-neah_user} > /dev/null 2>&1; then
|
||||
echo "❌ PostgreSQL n'est pas prêt"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ PostgreSQL est prêt"
|
||||
|
||||
# Vérifier Redis
|
||||
if ! docker-compose -f docker-compose.prod.yml exec -T redis redis-cli -a ${REDIS_PASSWORD} ping > /dev/null 2>&1; then
|
||||
if ! docker-compose -f docker-compose.prod.yml --env-file .env.production exec -T redis redis-cli -a ${REDIS_PASSWORD} ping > /dev/null 2>&1; then
|
||||
echo "❌ Redis n'est pas prêt"
|
||||
exit 1
|
||||
fi
|
||||
echo "✅ Redis est prêt"
|
||||
|
||||
echo "🗄️ Application des migrations Prisma..."
|
||||
docker-compose -f docker-compose.prod.yml run --rm app npx prisma migrate deploy
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production run --rm app npx prisma migrate deploy
|
||||
|
||||
echo "🚀 Démarrage de l'application..."
|
||||
docker-compose -f docker-compose.prod.yml up -d app
|
||||
docker-compose -f docker-compose.prod.yml --env-file .env.production up -d app
|
||||
|
||||
echo "⏳ Attente que l'application démarre (10 secondes)..."
|
||||
sleep 10
|
||||
|
||||
Loading…
Reference in New Issue
Block a user