version: '3.8'

services:
  listmonk-mcp:
    build: .
    container_name: listmonk-mcp-server
    restart: unless-stopped
    environment:
      - LISTMONK_BASE_URL=${LISTMONK_BASE_URL:-http://listmonk:9000/api}
      - LISTMONK_USERNAME=${LISTMONK_USERNAME:-admin}
      - LISTMONK_PASSWORD=${LISTMONK_PASSWORD:-changeme}
      - LISTMONK_API_KEY=${LISTMONK_API_KEY:-}
    ports:
      - "9088:9088"  # Export port for cluster integration
    stdin_open: true
    tty: true
    networks:
      - mcp-network
    healthcheck:
      test: ["CMD", "node", "-e", "console.log('Health check OK')"]
      interval: 30s
      timeout: 10s
      retries: 3
    depends_on:
      - listmonk
    labels:
      - "mcp.service=listmonk-mcp-server"
      - "mcp.type=email-marketing"
      - "mcp.description=ListMonk email marketing automation via MCP"

  # Optional: Include Listmonk core if not already running
  listmonk:
    image: listmonk/listmonk:latest
    container_name: listmonk-core
    restart: unless-stopped
    ports:
      - "9000:9000"
    environment:
      - LISTMONK_app__admin_username=${LISTMONK_USERNAME:-admin}
      - LISTMONK_app__admin_password=${LISTMONK_PASSWORD:-changeme}
      - LISTMONK_db__host=postgres
      - LISTMONK_db__port=5432
      - LISTMONK_db__user=${POSTGRES_USER:-mcp_user}
      - LISTMONK_db__password=${POSTGRES_PASSWORD:-mcp_secure_password_2025}
      - LISTMONK_db__database=listmonk
      - LISTMONK_db__ssl_mode=disable
    depends_on:
      - postgres
    networks:
      - mcp-network
    volumes:
      - listmonk_uploads:/listmonk/uploads
    labels:
      - "mcp.service=listmonk-core"
      - "mcp.type=email-marketing-platform"
      - "mcp.description=ListMonk core email marketing platform"

  postgres:
    image: postgres:15-alpine
    container_name: listmonk-postgres
    restart: unless-stopped
    environment:
      POSTGRES_USER: ${POSTGRES_USER:-mcp_user}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-mcp_secure_password_2025}
      POSTGRES_DB: listmonk
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - mcp-network
    ports:
      - "5435:5432"

networks:
  mcp-network:
    external: true

volumes:
  postgres_data:
  listmonk_uploads: