
# Copyright (C) 2024 Intel Corporation
# SPDX-License-Identifier: Apache-2.0


services:
  vdms-vector-db:
    image: intellabs/vdms:v2.8.0
    container_name: vdms-vector-db
    ports:
      - "8001:55555"
  dataprep:
    image: ${REGISTRY:-opea}/dataprep-multimodal-vdms:${TAG:-latest}
    container_name: dataprep-vdms-server
    depends_on:
      - vdms-vector-db
    ports:
      - "6007:6007"
    environment:
      no_proxy: ${no_proxy}
      http_proxy: ${http_proxy}
      https_proxy: ${https_proxy}
      VDMS_HOST: ${VDMS_HOST}
      VDMS_PORT: ${VDMS_PORT}
      INDEX_NAME: ${INDEX_NAME}
    entrypoint: sh -c 'sleep 15 && python ingest_videos.py'
    volumes:
      - /home/$USER/.cache/clip:/home/user/.cache/clip
      - /home/$USER/.cache/huggingface/hub:/home/user/.cache/huggingface/hub
  embedding:
    image: ${REGISTRY:-opea}/embedding-multimodal-clip:${TAG:-latest}
    container_name: embedding-multimodal-server
    ports:
      - "6000:6000"
    ipc: host
    environment:
      no_proxy: ${no_proxy}
      http_proxy: ${http_proxy}
      https_proxy: ${https_proxy}
    volumes:
      - /home/$USER/.cache/huggingface/hub:/home/user/.cache/huggingface/hub
    restart: unless-stopped
  retriever:
    image: ${REGISTRY:-opea}/retriever-vdms:${TAG:-latest}
    container_name: retriever-vdms-server
    depends_on:
      - vdms-vector-db
    ports:
      - "7000:7000"
    ipc: host
    environment:
      no_proxy: ${no_proxy}
      http_proxy: ${http_proxy}
      https_proxy: ${https_proxy}
      INDEX_NAME: ${INDEX_NAME}
      VDMS_HOST: ${VDMS_HOST}
      VDMS_PORT: ${VDMS_PORT}
      USECLIP: ${USECLIP}
    entrypoint: sh -c 'sleep 30 && python retriever_vdms.py'
    restart: unless-stopped
    volumes:
      - /home/$USER/.cache/huggingface/hub:/home/user/.cache/huggingface/hub
  reranking:
    image: ${REGISTRY:-opea}/reranking-tei:${TAG:-latest}
    container_name: reranking-tei-server
    ports:
      - "8000:8000"
    ipc: host
    environment:
      no_proxy: ${no_proxy}
      http_proxy: ${http_proxy}
      https_proxy: ${https_proxy}
      CHUNK_DURATION: ${CHUNK_DURATION}
      FILE_SERVER_ENDPOINT: ${DATAPREP_GET_FILE_ENDPOINT}
      DATAPREP_GET_VIDEO_LIST_ENDPOINT: ${DATAPREP_GET_VIDEO_LIST_ENDPOINT}
    restart: unless-stopped
  lvm-video-llama:
    image: ${REGISTRY:-opea}/video-llama-lvm-server:${TAG:-latest}
    container_name: video-llama-lvm-server
    ports:
      - "9009:9009"
    ipc: host
    environment:
      http_proxy: ${http_proxy}
      https_proxy: ${https_proxy}
      no_proxy: ${no_proxy}
      llm_download: ${LLM_DOWNLOAD}
    volumes:
      - "/home/$USER/.cache:/home/user/.cache"
      - video-llama-model:/home/user/model
    restart: unless-stopped
  lvm:
    image: ${REGISTRY:-opea}/lvm-video-llama:${TAG:-latest}
    container_name: lvm-video-llama
    ports:
      - "9000:9000"
    ipc: host
    environment:
      http_proxy: ${http_proxy}
      https_proxy: ${https_proxy}
      no_proxy: ${no_proxy}
      LVM_ENDPOINT: ${LVM_ENDPOINT}
    restart: unless-stopped
    depends_on:
      - lvm-video-llama
  videoqna-xeon-backend-server:
    image: ${REGISTRY:-opea}/videoqna:${TAG:-latest}
    container_name: videoqna-xeon-backend-server
    depends_on:
      - vdms-vector-db
      - dataprep
      - embedding
      - retriever
      - reranking
      - lvm-video-llama
      - lvm
    ports:
      - "8888:8888"
    entrypoint: sh -c 'sleep 45 && python videoqna.py'
    environment:
      http_proxy: ${http_proxy}
      https_proxy: ${https_proxy}
      no_proxy: ${no_proxy}
      MEGA_SERVICE_HOST_IP: ${MEGA_SERVICE_HOST_IP}
      EMBEDDING_SERVICE_HOST_IP: ${EMBEDDING_SERVICE_HOST_IP}
      RETRIEVER_SERVICE_HOST_IP: ${RETRIEVER_SERVICE_HOST_IP}
      RERANK_SERVICE_HOST_IP: ${RERANK_SERVICE_HOST_IP}
      LVM_SERVICE_HOST_IP: ${LVM_SERVICE_HOST_IP}
    ipc: host
    restart: always
  videoqna-xeon-ui-server:
    image: ${REGISTRY:-opea}/videoqna-ui:${TAG:-latest}
    container_name: videoqna-xeon-ui-server
    depends_on:
      - videoqna-xeon-backend-server
    ports:
      - "5173:5173"
    environment:
      https_proxy: ${https_proxy}
      http_proxy: ${http_proxy}
      no_proxy: ${no_proxy}
      BACKEND_SERVICE_ENDPOINT: ${BACKEND_SERVICE_ENDPOINT}
      BACKEND_HEALTH_CHECK_ENDPOINT: ${BACKEND_HEALTH_CHECK_ENDPOINT}
    ipc: host
    restart: always
volumes:
  video-llama-model:
    external: true
networks:
  default:
    driver: bridge
