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

使用LangChainJS连接Docker中Weaviate时连接被拒绝求助

问题分析与解决建议

可能原因分析

  • 容器启动时序问题:NodeJS服务在Weaviate完全启动就绪前就发起请求,此时Weaviate的8080端口还未开始监听,导致连接被拒绝。
  • Weaviate容器未正常启动:环境变量或启动参数配置错误,导致Weaviate服务启动失败,端口未正常开放。
  • Docker网络异常:默认网络下容器间的DNS解析或连通性出现异常,导致NodeJS无法访问Weaviate服务。

解决建议

1. 强制容器启动顺序,等待Weaviate就绪

在Docker Compose中为NodeJS服务添加依赖配置与健康检查,确保Weaviate完全启动后再启动NodeJS:

# 假设你的NodeJS服务定义为node-app
node-app:
  # 你的NodeJS镜像、命令等原有配置
  depends_on:
    weaviate:
      condition: service_healthy

weaviate:
  image: semitechnologies/weaviate:1.21.3
  environment:
    OPENAI_APIKEY: xxx
    QUERY_DEFAULTS_LIMIT: 25
    AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false'
    PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
    DEFAULT_VECTORIZER_MODULE: 'text2vec-openai'
    ENABLE_MODULES: 'text2vec-openai'
    CLUSTER_HOSTNAME: 'node1'
    AUTHENTICATION_APIKEY_ENABLED: 'true'
    AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'xxx'
    AUTHENTICATION_APIKEY_USERS: 'my_app'
  ports:
    - 8080:8080
  volumes:
    - ./docker/weaviate/vectors:/var/lib/weaviate
  command:
    - --port
    - '8080'
    - --scheme
    - http
  healthcheck:
    test: ["CMD", "curl", "-f", "http://localhost:8080/v1/.well-known/ready"]
    interval: 5s
    timeout: 5s
    retries: 10

2. 检查Weaviate容器运行状态

执行以下命令排查Weaviate是否正常启动:

# 查看容器状态
docker-compose ps weaviate

# 查看容器启动日志,定位启动失败原因
docker-compose logs weaviate

重点关注日志中是否有OpenAI密钥错误、模块加载失败、端口占用等报错信息,对应修正环境变量或配置。

3. 验证容器间网络连通性

进入NodeJS容器,手动测试与Weaviate的连通性:

# 进入NodeJS容器(替换node-app为你的服务名称)
docker-compose exec node-app sh

# 测试服务名解析
ping weaviate

# 测试端口是否可访问
curl http://weaviate:8080/v1/.well-known/ready

如果解析或访问失败,尝试重建Docker Compose网络:

docker-compose down
docker-compose up -d

4. 简化配置排查认证问题

临时关闭Weaviate的API密钥认证,简化配置后测试连接:

weaviate:
  environment:
    AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
    AUTHENTICATION_APIKEY_ENABLED: 'false'
    # 保留其他环境变量配置

同时修改客户端代码去掉APIKey配置:

const client = weaviate.client({
  scheme: 'http',
  host: 'weaviate:8080'
});

如果此时连接成功,说明原APIKey配置存在密钥不匹配、用户映射错误等问题,需重新核对AUTHENTICATION_APIKEY_ALLOWED_KEYS与AUTHENTICATION_APIKEY_USERS配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 07:58:15