version: '3.8' services: app: build: context: ./backend dockerfile: Dockerfile ports: - "8001:8000" env_file: - ./backend/.env environment: - MILVUS_HOST=milvus-standalone - MILVUS_PORT=19530 - DATABASE_URL=postgresql+psycopg2://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-password}@opslane-db:5432/${POSTGRES_DB:-opslane} depends_on: - opslane-db - milvus-standalone - setup opslane-db: image: postgres:13 environment: - POSTGRES_USER=${POSTGRES_USER:-postgres} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-password} - POSTGRES_DB=${POSTGRES_DB:-opslane} volumes: - postgres_data:/var/lib/postgresql/data ports: - "${POSTGRES_PORT:-5433}:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres}"] interval: 5s timeout: 5s retries: 5 etcd: container_name: milvus-etcd image: quay.io/coreos/etcd:v3.5.0 environment: - ETCD_AUTO_COMPACTION_MODE=revision - ETCD_AUTO_COMPACTION_RETENTION=1000 - ETCD_QUOTA_BACKEND_BYTES=4294967296 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 minio: container_name: milvus-minio image: minio/minio:RELEASE.2020-12-03T00-03-10Z 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-standalone: container_name: milvus-standalone image: milvusdb/milvus:v2.3.21 command: ["milvus", "run", "standalone"] environment: ETCD_ENDPOINTS: etcd:2379 MINIO_ADDRESS: minio:9000 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus ports: - "19530:19530" depends_on: - "etcd" - "minio" setup: build: context: ./backend dockerfile: Dockerfile env_file: - ./backend/.env environment: - MILVUS_HOST=milvus-standalone - MILVUS_PORT=19530 - DATABASE_URL=postgresql+psycopg2://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-password}@opslane-db:5432/${POSTGRES_DB:-opslane} depends_on: - opslane-db - milvus-standalone command: > sh -c " python -m alembic upgrade head && echo 'Setup completed successfully' " volumes: postgres_data: networks: default: name: milvus