You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Weaviate启动失败及容器间通信问题技术求助

解决Docker Compose下Weaviate与t2v-transformers、Panel应用的连接问题

问题分析

从日志可定位两个核心故障:

  • Weaviate启动时,t2v-transformers服务尚未就绪,导致连接被拒绝
  • Panel应用容器内使用localhost:8080访问Weaviate,但容器内的localhost指向自身,无法跨容器访问Weaviate服务

解决方案

1. 修正Panel应用的Weaviate连接地址

在Main.ipynb中,所有指向Weaviate的URL需从http://localhost:8080改为http://weaviate:8080。Docker Compose自定义网络中,服务名称可直接作为域名解析到对应容器IP。

2. 配置容器启动依赖与健康检查

修改Docker Compose配置,确保t2v-transformers服务就绪后再启动Weaviate,同时给Weaviate添加健康检查,让Panel应用等待Weaviate完全启动后再尝试连接:

修改后的docker-compose.yml:

version: '3.4'
services:
  weaviate:
    command:
    - --host
    - 0.0.0.0
    - --port
    - '8080'
    - --scheme
    - http
    image: semitechnologies/weaviate:1.19.6
    ports:
    - 8080:8080
    restart: on-failure:0
    environment:
      TRANSFORMERS_INFERENCE_API: 'http://t2v-transformers:8080'
      QUERY_DEFAULTS_LIMIT: 25
      AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
      PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
      DEFAULT_VECTORIZER_MODULE: 'text2vec-transformers'
      ENABLE_MODULES: 'text2vec-transformers'
      CLUSTER_HOSTNAME: 'node1'
    networks:
      - my-network
    depends_on:
      t2v-transformers:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/v1/.well-known/ready"]
      interval: 5s
      timeout: 5s
      retries: 10

  t2v-transformers:
    image: semitechnologies/transformers-inference:sentence-transformers-paraphrase-multilingual-MiniLM-L12-v2
    environment:
      ENABLE_CUDA: '0'
    networks:
      - my-network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/.well-known/ready"]
      interval: 5s
      timeout: 5s
      retries: 10

  buscahibrida:
    build: .
    container_name: buscahibrida-container
    command: panel serve ./Main.ipynb --address 0.0.0.0 --port 5006
    ports: 
      - 5006:5006
    volumes:
      - .:/buscahibrida
    networks:
      - my-network
    depends_on:
      weaviate:
        condition: service_healthy

networks:
  my-network:

3. 优化Panel应用运行(可选)

日志中提到的内存泄漏警告源于直接运行Jupyter Notebook文件。建议将Main.ipynb导出为Python脚本(Main.py),修改启动命令为:

panel serve ./Main.py --address 0.0.0.0 --port 5006

可避免Notebook运行时的潜在内存问题。

关键修改说明

  • 健康检查:给t2v-transformers和Weaviate添加healthcheck,确保服务真正就绪后才允许依赖服务启动
  • 启动依赖:通过depends_on的service_healthy条件,替代默认的容器启动完成判断,解决服务启动顺序问题
  • 网络访问:容器间通过服务名而非localhost访问,利用Docker内置DNS解析

内容的提问来源于stack exchange,提问作者Geraldo Francisco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:37:06