Files
Socialflow/DOCKER.md
T
michaelschal 9ae2f6b3f2 Configure application to use a specific port and internal network
Updates Dockerfile and docker-compose.yml to expose port 4523 for the application and ensures it communicates with PostgreSQL over an internal Docker network.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: ae4037a0-2a6f-4530-9bac-79b543286bda
Replit-Commit-Checkpoint-Type: intermediate_checkpoint
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/397bca8c-984f-43ff-841a-10897aeb8140/ae4037a0-2a6f-4530-9bac-79b543286bda/MNNRXY7
2025-10-17 11:10:50 +00:00

4.8 KiB

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

cp .env.example .env

2. Éditer les variables d'environnement

Modifiez .env avec vos valeurs :

# 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

# 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

🔧 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) :
docker network create nginx_default
  1. Décommenter dans docker-compose.yml :
# 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
  1. Mettre à jour votre configuration Nginx pour cibler le port 4523 :
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

docker-compose build --no-cache
docker-compose up -d

Voir les logs d'un service spécifique

docker-compose logs -f app      # Application
docker-compose logs -f postgres # Base de données

Accéder au conteneur

docker-compose exec app sh       # Shell de l'application
docker-compose exec postgres psql -U socialflow  # PostgreSQL CLI

Nettoyer complètement

# 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

# 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é

# 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

# 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