version: '3.8' services: # Langfuse Database langfuse-db: image: postgres:15 container_name: langfuse-postgres # Load environment variables from .env (see .env.example) env_file: - .env environment: POSTGRES_DB: ${POSTGRES_DB:-langfuse} POSTGRES_USER: ${POSTGRES_USER:-langfuse} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-langfuse_password} POSTGRES_PORT: ${POSTGRES_PORT:-5432} volumes: - langfuse_db_data:/var/lib/postgresql/data networks: - langgraph-network restart: unless-stopped # Langfuse Server langfuse-server: image: langfuse/langfuse:2 container_name: langfuse-server depends_on: - langfuse-db ports: - "3000:3000" # Load environment variables from .env (see .env.example) env_file: - .env environment: # Compose the DATABASE_URL from postgres env vars to avoid hard-coding credentials DATABASE_URL: ${DATABASE_URL:-postgresql://${POSTGRES_USER:-langfuse}:${POSTGRES_PASSWORD:-langfuse_password}@langfuse-db:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-langfuse}} NEXTAUTH_SECRET: ${NEXTAUTH_SECRET:-mysecret} SALT: ${SALT:-mysalt} NEXTAUTH_URL: ${NEXTAUTH_URL:-http://localhost:3000} TELEMETRY_ENABLED: ${TELEMETRY_ENABLED:-true} LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES: ${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-false} networks: - langgraph-network restart: unless-stopped healthcheck: test: ["CMD", "curl", "--fail", "http://localhost:3000/api/public/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s # Main Application langgraph-agenticai: build: context: . dockerfile: Dockerfile args: GUARDRAILS_API_KEY: ${GUARDRAILS_API_KEY:-} container_name: langgraph-agenticai-app ports: - "8501:8501" # Load environment variables from .env (see .env.example) env_file: - .env environment: GROQ_API_KEY: ${GROQ_API_KEY:-} TAVILY_API_KEY: ${TAVILY_API_KEY:-} LANGFUSE_SECRET_KEY: ${LANGFUSE_SECRET_KEY:-} LANGFUSE_PUBLIC_KEY: ${LANGFUSE_PUBLIC_KEY:-} LANGFUSE_HOST: ${LANGFUSE_HOST:-http://langfuse-server:3000} STREAMLIT_ENV: ${STREAMLIT_ENV:-development} GUARDRAILS_ENABLED: ${GUARDRAILS_ENABLED:-true} MEMORI_DB: ${MEMORI_DB:-sqlite:///langgraphagenticai_memory.db} volumes: - ./src:/app/src - ./app.py:/app/app.py restart: unless-stopped healthcheck: test: ["CMD", "curl", "--fail", "http://localhost:8501/_stcore/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s networks: - langgraph-network volumes: langfuse_db_data: networks: langgraph-network: driver: bridge