marqo Docker & Self-Hosted Deployment

GitHub

Ecommerce Search and Discovery - marqo.ai

5,028 stars Python Python 1 file ยท ~2,346 tokens #ecommerce#machine-learning#multi-modal#search-engine
RAW Compose
1. Pull Image (DOCKERHUB) docker pull 424082663841.dkr.ecr.us-east-1.amazonaws.com/marqoai/api
2. Docker Run (1-Click Launch) docker run -d --name marqo -p 8000:8000 --restart always 424082663841.dkr.ecr.us-east-1.amazonaws.com/marqoai/api:latest
3. Podman Run podman run -d --name marqo -p 8000:8000 --restart always 424082663841.dkr.ecr.us-east-1.amazonaws.com/marqoai/api:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/424082663841.dkr.ecr.us-east-1.amazonaws.com/marqoai/api:latest
5. ORAS Pull (OCI Artifact) oras pull 424082663841.dkr.ecr.us-east-1.amazonaws.com/marqoai/api:latest
6. Compose Deployment docker compose up -d
compose.yaml
Download .yml
# A docker compose file that sets up a complete Marqo environment with all components
# including Triton Inference Server, Marqo API, Marqo Model Management Container (MMC),
# Marqo Inference Orchestrator Container (MIOC), and Vespa for search capabilities.

name: marqo-all-components

services:
  triton-gpu:
    image: nvcr.io/nvidia/tritonserver:${TRITON_VERSION:-25.08-py3}
    command:
      [
        "tritonserver",
        "--model-repository=/models",
        "--log-verbose=1",
        "--model-control-mode=explicit"
      ]
    volumes:
      - modelrepo:/models          # <== shared
    ports:
      - "8000:8000"                # HTTP
      - "8001:8001"                # gRPC
      - "8002:8002"                # Metrics
    networks:
      marqo-net:
        aliases: [triton]
    profiles: [gpu]
    restart: unless-stopped
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [ gpu ]

  triton:
    image: nvcr.io/nvidia/tritonserver:25.08-py3
    command:
      [
        "tritonserver",
        "--model-repository=/models",
        "--log-verbose=1",
        "--model-control-mode=explicit"
      ]
    volumes:
      - modelrepo:/models          # <== shared
    ports:
      - "8000:8000"                # HTTP
      - "8001:8001"                # gRPC
      - "8002:8002"                # Metrics
    networks: [ marqo-net ]
    profiles: [cpu]
    restart: unless-stopped

  api:
    image: 424082663841.dkr.ecr.us-east-1.amazonaws.com/marqoai/api:latest
    build:
      context: ./components
      dockerfile: marqo/Dockerfile
    stdin_open: true
    tty: true
    environment:
      HF_HUB_ENABLE_HF_TRANSFER: "1"
      MARQO_ENABLE_BATCH_APIS: "TRUE"
      MARQO_ENABLE_OPS_API: "TRUE"
      MARQO_API_INFERENCE_CACHE_SIZE: "0"
      MARQO_LOG_FORMAT: "plain"
      MARQO_LOG_LEVEL: "info"
      MARQO_MAX_CPU_MODEL_MEMORY: "10"
      MARQO_MAX_CUDA_MODEL_MEMORY: "10"
      MARQO_MODELS_TO_PRELOAD: "[]"
      MARQO_INDEX_DEPLOYMENT_LOCK_TIMEOUT: "0"
      MARQO_REMOTE_INFERENCE_URL: "http://mioc:8884"
      VESPA_CONFIG_URL: "http://host.docker.internal:19071"
      VESPA_DOCUMENT_URL: "http://host.docker.internal:8080"
      VESPA_QUERY_URL: "http://host.docker.internal:8080"
      ZOOKEEPER_HOSTS: "host.docker.internal:2181"
    ports:
      - "8882:8882"
    networks: [marqo-net]
    extra_hosts:
      - "host.docker.internal:host-gateway"
    restart: unless-stopped

  mmc:
    image: 424082663841.dkr.ecr.us-east-1.amazonaws.com/marqoai/model-management:latest
    build:
      context: ./components
      dockerfile: model_management/Dockerfile
    stdin_open: true
    tty: true
    environment:
      MARQO_LOG_LEVEL: "INFO"
      MARQO_MODELS_TO_PRELOAD: "[]"
      MARQO_TRITON_REST_URL: http://triton:8000
      MARQO_MODEL_CACHE_PATH: /models
    volumes:
      - modelrepo:/models
      - ~/.aws/credentials:/root/.aws/credentials:ro  # If using AWS S3 for model storage
    ports:
      - "8883:8883"
    networks: [marqo-net]
    restart: unless-stopped

  mioc:
    image: 424082663841.dkr.ecr.us-east-1.amazonaws.com/marqoai/inference-orchestrator:latest
    build:
      context: ./components
      dockerfile: inference_orchestrator/Dockerfile
    stdin_open: true
    tty: true
    environment:
      MARQO_LOG_LEVEL: "INFO"
      MARQO_TRITON_URL: http://triton:8001
      MARQO_MODEL_MANAGEMENT_CONTAINER_URL: http://mmc:8883
    ports:
      - "8884:8884"
    networks: [marqo-net]
    restart: unless-stopped

volumes:
  modelrepo:

networks:
  marqo-net: