deploy.sh 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #!/bin/bash
  2. echo "======================================"
  3. echo " Chroma 向量数据库部署脚本"
  4. echo "======================================"
  5. echo ""
  6. DEPLOY_DIR="/opt/chroma"
  7. DATA_DIR="/data/chroma"
  8. echo "[1/5] 检查环境..."
  9. if ! command -v docker &> /dev/null; then
  10. echo "错误: Docker 未安装,请先安装 Docker"
  11. exit 1
  12. fi
  13. if ! command -v docker-compose &> /dev/null; then
  14. echo "错误: Docker Compose 未安装,请先安装 Docker Compose"
  15. exit 1
  16. fi
  17. echo "[2/5] 创建目录..."
  18. mkdir -p $DEPLOY_DIR
  19. mkdir -p $DATA_DIR/chroma_data
  20. echo "[3/5] 生成配置文件..."
  21. cat > $DEPLOY_DIR/docker-compose.yml << 'EOF'
  22. version: '3.8'
  23. services:
  24. chroma:
  25. image: chromadb/chroma:latest
  26. container_name: chroma_server
  27. ports:
  28. - "8000:8000"
  29. volumes:
  30. - /data/chroma/chroma_data:/chroma/chroma_data
  31. environment:
  32. - CHROMA_SERVER_HOST=0.0.0.0
  33. - CHROMA_SERVER_HTTP_PORT=8000
  34. - CHROMA_SERVER_AUTH_CREDENTIALS=${CHROMA_AUTH_TOKEN}
  35. - CHROMA_SERVER_AUTH_PROVIDER=chromadb.auth.token.TokenAuthProvider
  36. - ANONYMIZED_TELEMETRY=False
  37. restart: unless-stopped
  38. healthcheck:
  39. test: ["CMD", "curl", "-f", "http://localhost:8000/api/v1/heartbeat"]
  40. interval: 30s
  41. timeout: 10s
  42. retries: 3
  43. networks:
  44. - chroma_network
  45. networks:
  46. chroma_network:
  47. driver: bridge
  48. EOF
  49. AUTH_TOKEN=$(openssl rand -hex 32)
  50. cat > $DEPLOY_DIR/.env << EOF
  51. CHROMA_AUTH_TOKEN=$AUTH_TOKEN
  52. EMBEDDING_API_KEY=your_embedding_api_key_here
  53. OPENAI_API_KEY=your_openai_api_key_here
  54. EOF
  55. echo "[4/5] 启动服务..."
  56. cd $DEPLOY_DIR
  57. docker-compose up -d
  58. echo "[5/5] 等待服务启动..."
  59. sleep 10
  60. echo ""
  61. echo "======================================"
  62. echo " 部署完成!"
  63. echo "======================================"
  64. echo ""
  65. echo "服务地址: http://localhost:8000"
  66. echo "认证Token: $AUTH_TOKEN"
  67. echo ""
  68. echo "验证命令: curl http://localhost:8000/api/v1/heartbeat"
  69. echo ""
  70. echo "配置文件位置: $DEPLOY_DIR/.env"
  71. echo ""