使用 docker-compose 的 Cassandra 数据库的 Golang:无法连接 (gocql)

Golang with Cassandra db using docker-compose : cannot connect (gocql)

我正在尝试设置一个 cassandra 数据库并使用 golang 应用程序连接到它。

这是我的docker-compose


version: "3.6"

services:
  cassandra:
    image: cassandra:4.0
    ports:
      - 9042:9042
    volumes:
      - ~/apps/cassandra:/var/lib/cassandra
    environment:
      - CASSANDRA_CLUSTER_NAME=mycluster

  myapp:
    ...
    ports:
      - 4242:4242
      - 4243:4243
    depends_on:
      - cassandra
      ...

networks:
  default:
    driver: bridge

我使用

启动 Cassandra

docker-compose up cassandra

然后我等待它准备就绪。

然后我尝试使用

在本地连接到 Cassandra
> cqlsh
Connected to mycluster at 127.0.0.1:9042

然后我尝试使用 gocql

在我的 go 应用程序(dockerized)中连接到它
    cluster := gocql.NewCluster("127.0.0.1")
    session, err := cluster.CreateSession()

(也尝试将元素添加为 ConsistencyProtoVersion=4 等。结果相同)

然后说:

Cannot connect to db: gocql: unable to create session: unable to discover protocol version: dial tcp 127.0.0.1:9042: connect: connection refused

你呢。知道为什么它无法连接吗?

谢谢!

每个容器都有自己的本地主机 (127.0.0.1) 地址 - 您需要连接到您机器的 IP 地址(如果您使用 bridge),或者最好通过名称连接( cassandra)