【问题标题】:How to connect my Java application to Cassandra running through docker?如何将我的 Java 应用程序连接到通过 docker 运行的 Cassandra?
【发布时间】:2018-11-21 11:35:10
【问题描述】:

我有以下java代码:

String serverIP = "127.0.0.1";  
String keyspace = "testkeyspace"; 
Cluster cluster = Cluster.builder().addContactPoints(serverIP).build();  
Session session = cluster.connect(keyspace);

我试图用它来检查我与 Cassandra 的连接。

我在自己的机器上本地安装了 Cassandra,并且连接成功。 我的 maven 项目正在使用以下

弹簧数据卡桑德拉 2.0.6.发布

但是,当我尝试将我的 java 应用程序连接到由 docker 运行的 Cassandra 时(我的本地 cassandra 已停止),我遇到以下错误:

尝试查询的所有主机都失败(尝试:/127.0.0.1:9042 (com.datastax.driver.core.exceptions.TransportException: [/127.0.0.1:9042] 无法连接))

我不知道我的 IP 是否错误,但是在我的 docker CQLSH 上,每当我打开我的 CQLSH 时都会写入以下消息:

在 127.0.0.1:9042 连接到测试集群。 [cqlsh 5.0.1 |卡桑德拉 3.11.2 | CQL 规范 3.4.4 |本机协议 v4] 使用 HELP 寻求帮助。

请帮忙,我一定在这里错过了什么。谢谢!

【问题讨论】:

  • 检查你的帖子,因为你有不同的 ip: 172 和 127... 这很混乱
  • 你有没有暴露 Cassandra Docker 容器的端口? docker run -p [host_port]:[cassandra_port]?
  • 对不起。它实际上是 127。:p 我正在尝试不同的 IP,这就是为什么.. 但通常它的 127.0.0.1
  • @Mornor 我应该在 [host_port]:[cassandra_port] 上写什么?我应该写吗, docker run -p 8080:8080
  • 我不知道 Cassandra 默认使用哪个端口。从您的帖子来看,似乎是:9042。所以 Docker 命令应该类似于:docker run -p 10080:9042 cassandra:latest。然后,您将能够通过 localhost:10080 访问 Cassandra

标签: java docker cassandra database-connection


【解决方案1】:

只需在此处添加我的答案,因为它已被接受为评论,以帮助其他人解决同样的问题。

您应该使用以下命令将 Cassandra Docker 容器端口公开给 localhost:

docker run -p 9042:9042 cassandra:latest

现在应该可以通过 localhost:9042 访问 Cassandra

【讨论】:

    猜你喜欢
    • 2021-09-26
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2021-02-03
    • 2021-02-09
    • 2018-05-20
    • 2017-12-20
    • 2023-02-10
    相关资源
    最近更新 更多