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

Docker部署Cassandra无法连接NodeJS:NoHostAvailableError/ECONNREFUSED排查

问题根源与解决方案

核心问题:端口映射错误

你当前的docker run命令把主机的9842端口映射到了容器的9842端口,但Cassandra默认的CQL服务端口是9042,容器内的Cassandra根本没在9842端口监听,所以端口映射完全无效,导致NodeJS无法连接。

分步解决:

  1. 修正Docker启动命令
    停止并删除现有容器,重新启动时将主机端口映射到容器的9042端口:
docker stop cassandra-docker
docker rm cassandra-docker
docker run -d --name cassandra-docker -p 9842:9042 cassandra

这里-p 9842:9042表示把主机的9842端口转发到容器内Cassandra的默认CQL端口9042。

  1. 调整NodeJS连接配置
    对应修改后的端口映射,NodeJS的连接配置应改为:
const client = new cassandra.Client({
  contactPoints: ['127.0.0.1:9842'],
  // 补充其他必要配置:localDataCenter、keyspace等
});

如果你想直接用默认的9042端口,启动容器时用-p 9042:9042,配置就可以写contactPoints: ['127.0.0.1']。

  1. 额外排查点
  • 确认容器状态:执行docker ps查看cassandra-docker是否处于Up状态,用docker logs cassandra-docker检查启动日志,确保Cassandra完全启动(首次启动需要1-2分钟)。
  • 驱动版本:确保你的NodeJS项目使用的cassandra-driver是最新稳定版,避免版本兼容问题。
  • 防火墙检查:确认主机防火墙没有阻止9842或9042端口的入站连接。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 06:40:29