# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: Milvus
spec:
    description: Milvus is an open-source vector database that brings search to GenAI applications.
    icon: https://miro.medium.com/v2/1*-VEGyAgcIBD62XtZWavy8w.png
    tags:
        - database
        - vector
    readme: |
        Milvus is an open-source vector database that brings search to GenAI applications. pip-install on your laptop, use with popular AI dev tools and scale to billions of vectors.
    services:
        - name: minio
          icon: https://raw.githubusercontent.com/zeabur/service-icons/main/marketplace/minio.svg
          template: PREBUILT
          spec:
            id: minio
            source:
                image: quay.io/minio/minio:latest
                command:
                    - minio
                    - server
                    - /data
            ports:
                - id: web
                  port: 9000
                  type: HTTP
                - id: console
                  port: 9090
                  type: HTTP
            volumes:
                - id: data
                  dir: /data
            instructions:
                - title: Go to MinIO Console
                  content: ${MINIO_CONSOLE_URL}
                - title: Default Username (S3 Access Key ID)
                  content: ${MINIO_USERNAME}
                - title: Default Password (S3 Secret Access Key)
                  content: ${MINIO_PASSWORD}
                - title: Default Bucket
                  content: ${MINIO_DEFAULT_BUCKET}
            env:
                MINIO_BROWSER_REDIRECT:
                    default: "false"
                MINIO_CONSOLE_URL:
                    default: ${ZEABUR_CONSOLE_URL}
                    expose: true
                MINIO_PASSWORD:
                    default: ${MINIO_ROOT_PASSWORD}
                    expose: true
                MINIO_ROOT_PASSWORD:
                    default: minioadmin
                MINIO_ROOT_USER:
                    default: minioadmin
                MINIO_USERNAME:
                    default: ${MINIO_ROOT_USER}
                    expose: true
        - name: etcd
          icon: https://i.imgur.com/jyDr9hI.png
          template: PREBUILT
          spec:
            id: etcd
            source:
                image: quay.io/coreos/etcd:v3.5.10
                command:
                    - etcd
                    - --config-file
                    - /etc/etcd/etcd.yml
            ports:
                - id: client
                  port: 2379
                  type: TCP
                - id: peer
                  port: 2380
                  type: TCP
            volumes:
                - id: data
                  dir: /etcd-data
            env:
                ALLOW_NONE_AUTHENTICATION:
                    default: "yes"
            configs:
                - path: /etc/etcd/etcd.yml
                  template: |
                    name: 'etcd0'
                    data-dir: '/etcd-data'
                    listen-client-urls: 'http://0.0.0.0:2379'
                    advertise-client-urls: 'http://0.0.0.0:2379'
                    listen-peer-urls: 'http://0.0.0.0:2380'
                    initial-advertise-peer-urls: 'http://0.0.0.0:2380'
                    initial-cluster: 'etcd0=http://0.0.0.0:2380'
                    initial-cluster-token: 'etcd-cluster-1'
                    initial-cluster-state: 'new'
                  permission: null
                  envsubst: null
        - name: milvus
          icon: https://miro.medium.com/v2/1*-VEGyAgcIBD62XtZWavy8w.png
          template: PREBUILT
          spec:
            id: milvus
            source:
                image: milvusdb/milvus:v2.4.4
                command:
                    - milvus
                    - run
                    - standalone
            ports:
                - id: grpc
                  port: 19530
                  type: TCP
                - id: http
                  port: 19121
                  type: HTTP
            volumes:
                - id: data
                  dir: /var/lib/milvus
            env:
                ETCD_ENDPOINTS:
                    default: etcd:2379
                MINIO_ADDRESS:
                    default: minio:9000
