Golang 与 Cassandra db 使用 docker-compose:无法连接(gocql)

F4K*_*4Ke 6 go cassandra gocql docker-compose

我正在尝试设置 cassandra DB 并使用 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
Run Code Online (Sandbox Code Playgroud)

我使用启动 Cassandra

docker-compose up cassandra

然后我等待它准备好。

然后我尝试在本地使用连接到 Cassandra

> cqlsh
Connected to mycluster at 127.0.0.1:9042

Run Code Online (Sandbox Code Playgroud)

然后我尝试在我的 go 应用程序(dockerized)中使用连接到它gocql

    cluster := gocql.NewCluster("127.0.0.1")
    session, err := cluster.CreateSession()
Run Code Online (Sandbox Code Playgroud)

(还尝试添加元素 asConsistencyProtoVersion=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
Run Code Online (Sandbox Code Playgroud)

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

谢谢 !

Ale*_*Ott 3

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