# DĂ©ploiement Docker - Social Flow ## 📋 Configuration L'application utilise Docker Compose pour orchestrer : - **PostgreSQL 16** : Base de donnĂ©es sur rĂ©seau interne - **Social Flow App** : Application Node.js exposĂ©e sur le port **4523** ## 🚀 DĂ©marrage rapide ### 1. Copier le fichier d'environnement ```bash cp .env.example .env ``` ### 2. Éditer les variables d'environnement Modifiez `.env` avec vos valeurs : ```bash # Base de donnĂ©es PGDATABASE=socialflow PGUSER=socialflow PGPASSWORD=votre_mot_de_passe_securise # Application PORT=4523 SESSION_SECRET=votre_cle_secrete_aleatoire # API OpenRouter (pour la gĂ©nĂ©ration IA) OPENROUTER_API_KEY=votre_cle_openrouter ``` ### 3. Lancer les conteneurs ```bash # DĂ©marrer en arriĂšre-plan docker-compose up -d # Voir les logs docker-compose logs -f # ArrĂȘter docker-compose down ``` ## 🌐 AccĂšs Ă  l'application - **AccĂšs direct** : http://localhost:4523 - **Avec Nginx** (reverse proxy) : Voir section ci-dessous ## 🔧 Architecture rĂ©seau ### RĂ©seau interne (`internal`) - PostgreSQL et l'application communiquent sur ce rĂ©seau privĂ© - La base de donnĂ©es n'est **pas exposĂ©e** sur l'hĂŽte pour plus de sĂ©curitĂ© ### RĂ©seau nginx (`nginx_default`) - OPTIONNEL - RĂ©seau externe pour le reverse proxy Nginx - **Par dĂ©faut : dĂ©sactivĂ©** (commentĂ© dans docker-compose.yml) - DĂ©commentez-le uniquement si vous utilisez Nginx ## 📝 Configuration Nginx (optionnelle) ### Activation du rĂ©seau Nginx Si vous utilisez Nginx comme reverse proxy : 1. **CrĂ©er le rĂ©seau Docker nginx** (une seule fois) : ```bash docker network create nginx_default ``` 2. **DĂ©commenter dans docker-compose.yml** : ```yaml # Dans la section app > networks : networks: - internal - nginx_default # ← DĂ©commentez cette ligne # Dans la section networks en bas du fichier : networks: # ... nginx_default: external: true # ← DĂ©commentez ces 2 lignes ``` 3. **Mettre Ă  jour votre configuration Nginx** pour cibler le port **4523** : ```nginx upstream socialflow { server socialflow-app:4523; # ← Utiliser le port 4523 } server { listen 80; server_name votre-domaine.com; location / { proxy_pass http://socialflow; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` **Important** : Si vous n'utilisez pas Nginx, vous pouvez retirer le rĂ©seau `nginx_default` du `docker-compose.yml`. ## đŸ› ïž Commandes utiles ### Reconstruire les images ```bash docker-compose build --no-cache docker-compose up -d ``` ### Voir les logs d'un service spĂ©cifique ```bash docker-compose logs -f app # Application docker-compose logs -f postgres # Base de donnĂ©es ``` ### AccĂ©der au conteneur ```bash docker-compose exec app sh # Shell de l'application docker-compose exec postgres psql -U socialflow # PostgreSQL CLI ``` ### Nettoyer complĂštement ```bash # ArrĂȘter et supprimer les conteneurs, rĂ©seaux docker-compose down # Supprimer aussi les volumes (⚠ PERTE DE DONNÉES) docker-compose down -v ``` ## 🔒 SĂ©curitĂ© en production 1. **Variables d'environnement** : Ne commitez JAMAIS le fichier `.env` 2. **Mots de passe** : Utilisez des mots de passe forts et alĂ©atoires 3. **SESSION_SECRET** : GĂ©nĂ©rez une clĂ© alĂ©atoire de 32+ caractĂšres 4. **Firewall** : Limitez l'accĂšs au port 4523 ou utilisez Nginx 5. **HTTPS** : Configurez un certificat SSL (Let's Encrypt + Nginx) ## 📊 Healthchecks - **PostgreSQL** : VĂ©rifie que la base est prĂȘte avant de dĂ©marrer l'app - **Migrations** : ExĂ©cutĂ©es automatiquement au dĂ©marrage (`drizzle-kit push --force`) ## 🐛 DĂ©pannage ### L'application ne dĂ©marre pas ```bash # VĂ©rifier les logs docker-compose logs app # VĂ©rifier que PostgreSQL est prĂȘt docker-compose exec postgres pg_isready -U socialflow ``` ### Port 4523 dĂ©jĂ  utilisĂ© ```bash # Trouver le processus sudo lsof -i :4523 # Ou changer le port dans .env et docker-compose.yml ``` ### Erreur de connexion Ă  la base de donnĂ©es VĂ©rifiez que `DATABASE_URL` dans `.env` correspond aux variables `PGUSER`, `PGPASSWORD`, etc. ## 📩 Volumes Docker - `postgres_data` : DonnĂ©es persistantes de PostgreSQL - Mappages locaux : - `./attached_assets` → `/app/attached_assets` (mĂ©dias uploadĂ©s) - `./migrations` → `/app/migrations` (migrations DB) ## 🔄 Mise Ă  jour de l'application ```bash # 1. Pull les derniĂšres modifications git pull # 2. Reconstruire l'image docker-compose build # 3. RedĂ©marrer docker-compose up -d # 4. VĂ©rifier les logs docker-compose logs -f app ```