Docker Deployment

Deploy CognitiveX using Docker Compose for quick, reliable, and reproducible deployments.

Prerequisites

  • Docker Engine 20.10+
  • Docker Compose 2.0+
  • 4GB+ RAM available
  • 20GB+ disk space

Quick Start

1. Download Docker Compose File

bash
curl -fsSL https://get.cognitivex.ai/docker-compose.yml -o docker-compose.yml

2. Configure Environment

.envbash
# API Keys
COGNITIVEX_API_KEY=your_api_key_here
OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key

# Database
POSTGRES_PASSWORD=secure_password_here
POSTGRES_DB=cognitivex

# Redis
REDIS_PASSWORD=secure_redis_password

# Application
NODE_ENV=production
PORT=3000

3. Start Services

bash
docker-compose up -d

4. Verify Deployment

bash
# Check services
docker-compose ps

# View logs
docker-compose logs -f

# Health check
curl http://localhost:3000/health

Complete docker-compose.yml

docker-compose.ymlyaml
version: '3.8'

services:
  # PostgreSQL with pgvector
  postgres:
    image: pgvector/pgvector:pg16
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5

  # Redis
  redis:
    image: redis:7-alpine
    command: redis-server --requirepass ${REDIS_PASSWORD}
    volumes:
      - redis_data:/data
    ports:
      - "6379:6379"
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5

  # CognitiveX Backend
  backend:
    image: cognitivex/backend:latest
    environment:
      NODE_ENV: production
      DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
      REDIS_URL: redis://:${REDIS_PASSWORD}@redis:6379
      OPENAI_API_KEY: ${OPENAI_API_KEY}
      ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}
    ports:
      - "3000:3000"
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
      interval: 30s
      timeout: 10s
      retries: 3

volumes:
  postgres_data:
  redis_data:

Management Commands

Start Services

bash
docker-compose up -d

Stop Services

bash
docker-compose down

View Logs

bash
# All services
docker-compose logs -f

# Specific service
docker-compose logs -f backend

Update Services

bash
docker-compose pull
docker-compose up -d

Database Backup

bash
docker-compose exec postgres pg_dump -U postgres cognitivex > backup.sql

Production Configuration

Additional Considerations

  • • Use restart: unless-stopped for auto-restart
  • • Configure resource limits (CPU, memory)
  • • Set up log rotation
  • • Use secrets management for sensitive data
  • • Enable SSL/TLS with reverse proxy (nginx/Traefik)
  • • Set up automated backups
  • • Configure monitoring and alerts

Troubleshooting

Service won't start

Check logs: docker-compose logs [service]

Database connection error

Verify PostgreSQL is healthy: docker-compose ps

Out of disk space

Clean up: docker system prune -a