部署Weaviate Docker容器时extensions-storage报connection refused错如何解决
问题根因
报错是contextionary服务启动时尝试访问Weaviate的扩展存储接口失败,本质是两个服务启动顺序冲突:当前配置没有指定启动依赖,两个服务同时启动,Weaviate初始化耗时更长,contextionary发起连接请求时Weaviate还没完成端口监听,因此触发connection refused报错。
解决方案
方案一:调整docker-compose配置(推荐,一劳永逸)
新增服务健康检查和启动依赖规则,确保contextionary在Weaviate完全就绪后再启动,修改后的完整配置如下:
version: '2' services: weaviate: image: semitechnologies/weaviate:1.2.1 ports: - 8080:8080 restart: on-failure:0 environment: CONTEXTIONARY_URL: contextionary:9999 QUERY_DEFAULTS_LIMIT: 25 AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true' PERSISTENCE_DATA_PATH: '/var/lib/weaviate' DEFAULT_VECTORIZER_MODULE: 'text2vec-contextionary' ENABLE_MODULES: text2vec-contextionary # 新增健康检查,检测Weaviate是否就绪 healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/v1/.well-known/ready"] interval: 5s timeout: 5s retries: 10 contextionary: environment: OCCURRENCE_WEIGHT_LINEAR_FACTOR: 0.75 EXTENSIONS_STORAGE_MODE: weaviate EXTENSIONS_STORAGE_ORIGIN: http://weaviate:8080 NEIGHBOR_OCCURRENCE_IGNORE_PERCENTILE: 5 ENABLE_COMPOUND_SPLITTING: 'false' image: semitechnologies/contextionary:en0.16.0-v1.0.2 # 新增启动依赖,等待Weaviate健康检查通过后再启动 depends_on: weaviate: condition: service_healthy
修改配置后重新执行docker-compose up -d即可。
方案二:临时手动重启
如果不想修改配置,可以先等待1~2分钟待Weaviate完全启动后,执行以下命令重启contextionary服务即可:
docker restart $(docker ps -q --filter "name=contextionary")
验证方法
服务启动完成后,访问http://localhost:8080/v1/meta,如果能正常返回JSON格式的服务元数据,说明部署正常无报错。
内容的提问来源于stack exchange,提问作者Rizwan
相关产品推荐
相关产品推荐

