Connect the Cassandra container to application web container failed - Error: 202 Connecting to Node

Connect the Cassandra container to application web container failed - Error: 202 Connecting to Node

所以,我创建了两个 docker 的图像,我想用 docker 作曲家将一个连接到另一个。第一张图片是 Cassandra 3.11.11(来自官方中心 docker),另一张是我自己用 tomcat 版本 9.0.54 和我的应用程序 spring boot.[=15 创建的=]

我运行下面的docker-compose.ylm连接两个容器,其中cassandra:latest 是 cassandra 的图像,centos7-tomcat9-myapp 是我的应用程序网络的图像。

version: '3'

services:
  casandra:
    image: cassandra:latest

  myapp:
    image: centos7-tomcat9-myapp 
    depends_on:
      - casandra
    environment:
      - CASSANDRA_HOST=cassandra

我 运行 启动应用程序网络图像的命令行:docker run -it --rm --name fe3c2f120e01 -p 8888:8080 centos7-tomcat9-app .

在控制台日志中 spring 引导显示以下错误。它发生了,因为 myapp 的容器无法连接到 Cassandra 的容器。

2021-10-15 15:12:14.240 WARN 1 --- [ s0-admin-1] c.d.o.d.i.c.control.ControlConnection : [s0] Error connecting to Node(endPoint=127.0.0.1:9042, hostId=null, hashCode=47889c49), trying next node (ConnectionInitException: [s0|control|connecting...] Protocol initialization request, step 1 (OPTIONS): failed to send request (io.netty.channel.StacklessClosedChannelException))

我做错了什么?

编辑

这是关于 cassandra 图像的节点工具状态:

[root@GDBDEV04 cassandradb]# docker exec 552d359d177e nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address     Load       Tokens  Owns (effective)  Host ID                               Rack
UN  172.18.0.3  84.76 KiB  16      100.0%            685b6e0a-13c2-4d41-ba99-f3b0fa94477c  rack1

编辑 2 我需要将 Cassandra 的数据库图像与 Web 应用程序图像连接起来。连接微服务是不同的。我试图将 127.0.0.0(在 cassandra.yaml 内)更改为 0.0.0.0(仅用于测试),但错误仍然存​​在。我认为我的 docker-compose.yml 中肯定缺少某些东西。但是,我不知道是什么。

终于找到错误了。就我而言,我需要修复添加 Cassandra 和 Tomcat 端口的 docker-compose.yml 文件。在我的 application.properties(spring 引导配置文件)中,我更改了集群的名称。

Docker-compose.yml:

version: '3'

services:
  cassandra:
    image: cassandra:latest
    ports:
      - "9044:9042"
  myapp:
    image: centos7-tomcat9-myapp
    ports:
      -"8086:8080"
    depends_on:
      - cassandra
    environment:
      - CASSANDRA_HOST=cassandra

Application.config :

# CASSANDRA (CassandraProperties)
cassandra.cluster = Test Cluster 
cassandra.contactpoints=${CASSANDRA_HOST}

这个问题帮我解决了我的问题: