使用docker-compose从单独的docker容器中访问Cassandra

我试图从一个单独的容器(名为main)连接到一个cassandra容器。

这是我的docker-compose.yml

version: '3.2' services: main: build: context: . image: main-container:latest depends_on: - cassandra links: - cassandra stdin_open: true tty: true cassandra: build: context: . dockerfile: Dockerfile-cassandra ports: - "9042:9042" - "9160:9160" image: "customer-core-cassandra:latest" 

一旦我运行这个使用docker-compose,我运行这个命令:

docker-compose exec main cqlsh cassandra 9042

但我得到这个错误:

Connection error: ('Unable to connect to any servers', {'172.18.0.2': error(111, "Tried connecting to [('172.18.0.2', 9042)]. Last error: Connection refused")})

我想出了答案。 基本上,在cassandra.yaml文件中,它将默认的rpc_address设置为localhost。 如果是这样的话,Cassandra只会监听本地主机上的请求,并且不允许其他任何地方的连接。 为了改变这种情况,我必须将rpc_address设置为我的“cassandra”容器,以便我的主容器(以及其他容器)可以使用cassandra容器的ip地址访问Cassandra。

rpc_address: cassandra