如何通过 docker 将我的 Java 应用程序连接到 Cassandra 运行?

How to connect my Java application to Cassandra running through docker?

我有以下 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 项目正在使用以下

spring-data-cassandra 2.0.6.RELEASE

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

All host(s) tried for query failed (tried: /127.0.0.1:9042 (com.datastax.driver.core.exceptions.TransportException: [/127.0.0.1:9042] Cannot connect))

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

Connected to Test Cluster at 127.0.0.1:9042. [cqlsh 5.0.1 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4] Use HELP for help.

请帮忙,我一定是漏掉了什么。谢谢!

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

您应该将您的 Cassandra Docker 容器端口公开给本地主机:

docker run -p 9042:9042 cassandra:latest

现在应该可以在 localhost:9042

上访问 Cassandra