version: '3.8' services: # Base de données PostgreSQL postgres: image: postgres:16-alpine container_name: socialflow-db restart: unless-stopped environment: POSTGRES_DB: ${PGDATABASE:-socialflow} POSTGRES_USER: ${PGUSER:-socialflow} POSTGRES_PASSWORD: ${PGPASSWORD:-changeme} volumes: - postgres_data:/var/lib/postgresql/data networks: - internal # Port non exposé sur l'hôte pour plus de sécurité en production # Décommentez la ligne suivante si vous avez besoin d'accéder à la DB localement # ports: # - "${PGPORT:-5432}:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${PGUSER:-socialflow}"] interval: 10s timeout: 5s retries: 5 # Application Social Flow app: build: context: . dockerfile: Dockerfile container_name: socialflow-app restart: unless-stopped ports: - "4523:4523" environment: NODE_ENV: production PORT: 4523 DATABASE_URL: postgresql://${PGUSER:-socialflow}:${PGPASSWORD:-changeme}@postgres:5432/${PGDATABASE:-socialflow} OPENROUTER_API_KEY: ${OPENROUTER_API_KEY} SESSION_SECRET: ${SESSION_SECRET:-your-secret-key-change-me} APP_URL: ${APP_URL:-http://localhost:4523} networks: - internal # Décommentez la ligne suivante si vous utilisez Nginx reverse proxy : # - nginx_default depends_on: postgres: condition: service_healthy command: sh -c "npx drizzle-kit push --force && npm run start" volumes: postgres_data: driver: local networks: # Réseau interne pour la communication DB <-> App internal: driver: bridge # Réseau externe pour nginx reverse proxy (optionnel) # Décommentez si vous utilisez Nginx : # nginx_default: # external: true