使用 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()
(也尝试将元素添加为 Consistency
、ProtoVersion=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
)
我正在尝试设置一个 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
我使用
启动 Cassandradocker-compose up cassandra
然后我等待它准备就绪。
然后我尝试使用
在本地连接到 Cassandra> cqlsh
Connected to mycluster at 127.0.0.1:9042
然后我尝试使用 gocql
cluster := gocql.NewCluster("127.0.0.1")
session, err := cluster.CreateSession()
(也尝试将元素添加为 Consistency
、ProtoVersion=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
)