services:
  lenscore-init:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - node_modules_data:/app/node_modules
    profiles: ["init"]

  lenscore:
    container_name: lenscore-app
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "${LENSCORE_PORT:-3001}:${LENSCORE_PORT:-3001}"
    environment:
      - NODE_ENV=development
      - PORT=${LENSCORE_PORT:-3001}
      - CACHE_TYPE=redis
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - OPENAI_API_KEY=${OPENAI_API_KEY}
      - OPENAI_MODEL=${OPENAI_MODEL}
      - OPENAI_MAX_TOKENS=${OPENAI_MAX_TOKENS}
      - OPENAI_TEMPERATURE=${OPENAI_TEMPERATURE}
      - OPENAI_TIMEOUT=${OPENAI_TIMEOUT}
      - OPENAI_RETRY_ATTEMPTS=${OPENAI_RETRY_ATTEMPTS}
      - OPENAI_RETRY_DELAY=${OPENAI_RETRY_DELAY}
    env_file:
      - .env
    volumes:
      - ./logs:/app/logs
      - ./cache:/app/cache
      - ./web:/app/web
      - ./storage:/app/storage
      - ${HOME}/.lenscore/web:/app/.lenscore/web
    depends_on:
      - redis

  redis:
    image: redis:7-alpine
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
    command: redis-server --appendonly yes

volumes:
  redis_data:
  node_modules_data:
