# # SPDX-FileCopyrightText: Copyright (c) 1993-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # services: backend: container_name: backend build: context: ./backend dockerfile: Dockerfile ports: - "8000:8000" volumes: - ./backend:/app depends_on: - postgres - etcd - minio restart: unless-stopped environment: - POSTGRES_HOST=postgres - POSTGRES_DB=chatbot - POSTGRES_USER=chatbot_user - POSTGRES_PASSWORD=chatbot_password - ETCD_ENDPOINTS=etcd:2379 - MINIO_ADDRESS=minio:9000 - MILVUS_ADDRESS=milvus:19530 - MODELS=gpt-oss-120b #,gpt-oss-20b frontend: container_name: frontend build: context: ./frontend dockerfile: Dockerfile ports: - "3000:3000" volumes: - /frontend:/app/frontend - /app/node_modules depends_on: - backend restart: unless-stopped postgres: container_name: postgres image: postgres:15-alpine ports: - "5432:5432" environment: - POSTGRES_DB=chatbot - POSTGRES_USER=chatbot_user - POSTGRES_PASSWORD=chatbot_password volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U chatbot_user -d chatbot"] interval: 30s timeout: 10s retries: 3 restart: unless-stopped etcd: container_name: milvus-etcd image: quay.io/coreos/etcd:v3.5.5 environment: - ETCD_AUTO_COMPACTION_MODE=revision - ETCD_AUTO_COMPACTION_RETENTION=1000 - ETCD_QUOTA_BACKEND_BYTES=4294967296 - ETCD_SNAPSHOT_COUNT=50000 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd healthcheck: test: ["CMD", "etcdctl", "endpoint", "health"] interval: 30s timeout: 20s retries: 3 minio: container_name: milvus-minio image: minio/minio:RELEASE.2023-03-20T20-16-18Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data command: minio server /minio_data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 milvus: container_name: milvus-standalone image: milvusdb/milvus:v2.5.15-20250718-3a3b374f-gpu-arm64 command: ["milvus", "run", "standalone"] environment: ETCD_ENDPOINTS: etcd:2379 MINIO_ADDRESS: minio:9000 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"] interval: 30s start_period: 90s timeout: 20s retries: 3 ports: - "19530:19530" - "9091:9091" depends_on: - "etcd" - "minio" volumes: postgres_data: networks: default: name: chatbot-net