# 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Ă© ### RĂ©seau nginx (`nginx_default`) - RĂ©seau externe pour le reverse proxy Nginx - PostgreSQL et l'application sont sur ce rĂ©seau - Permet l'accĂšs via Nginx et un domaine personnalisĂ© ## 📝 Configuration Nginx ### PrĂ©requis : CrĂ©er le rĂ©seau nginx **Avant de lancer docker-compose**, crĂ©ez le rĂ©seau nginx (une seule fois) : ```bash docker network create nginx_default ``` ### Configuration Nginx Mettez Ă  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 ```