Luciana Oliveira
Luciana Oliveira

Reputation: 1137

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

So, I created two docker's images and I want to connect one to which other with the docker composer. The first image is Cassandra 3.11.11 (from the official hub docker) and the other I created by myself with the tomcat version 9.0.54 and my application spring boot.

I ran the docker-compose.ylm below to connect the two container, where cassandra:latest is the cassandra's image and centos7-tomcat9-myapp is my app web's image.

version: '3'

services:
  casandra:
    image: cassandra:latest

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

I ran the command line to start the app web's image : docker run -it --rm --name fe3c2f120e01 -p 8888:8080 centos7-tomcat9-app .

In the console log the spring boot show me the error below. It happened, because the myapp's container could not connect to the Cassandra's container.

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))

What am I doing wrong?

EDIT

This is the nodetool status about the cassandra's image:

[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

EDIT 2 I need to connect the Cassandra's DB image with the web application image. It is different to connect microservices. I tried to change the 127.0.0.0 (inside the cassandra.yaml) to 0.0.0.0 (only to test) and the error persist. I think something missing in my docker-compose.yml for sure. However, I did not know what.

Upvotes: 1

Views: 959

Answers (1)

Luciana Oliveira
Luciana Oliveira

Reputation: 1137

Finally I found the error. In my case, I need to fixed the docker-compose.yml file adding the Cassandra and Tomcat's ports. And in my application.properties (spring boot config file), I changed the cluster's name.

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}

This question help me to resolve my problem: Accessing docker container mysql databases

Upvotes: 1

Related Questions