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

标签 docker cassandra docker-compose

我正在尝试从一个单独的容器(名为 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 up 运行它,我运行这个命令:

docker-compose exec main cqlsh cassandra 9042

但是我得到这个错误:

连接错误:('无法连接到任何服务器',{'172.18.0.2':错误(111,“尝试连接到 [('172.18.0.2',9042)]。最后一个错误:连接拒绝")})

最佳答案

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

rpc_address: cassandra

关于docker - 使用 docker-compose 从单独的 docker 容器访问 Cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44664028/

相关文章:

linux - Cassandra 生成过多实例,导致服务器不可用

cassandra - 观察者可以在哪里写入 Cassandra 数据库,也就是它们在哪里记录?

nosql - 在Cassandra中调整写入性能

python - docker python 官方示例错误

docker - 运行放置在dockervolumen中的sql脚本

docker - 拒绝访问异常 : An error occurred when calling the RegisterTaskDefinition operation

macos - Dockerized nginx 不提供 HTML 页面

docker - 使用 docker-compose 创建命名的 docker 卷?

docker - 有什么理由比运行脚本更喜欢串联的RUN指令吗?

regex - 对多个文件使用 Docker ADD 命令