Hi!

I am sure the problem is due to my inexperience with Docker and Cassandra, and 
even more so networking between multiple Docker containers… but I have tried 
everything I can think of and would like to ask for some help. 😅

I am getting this error:

[root@e5cc3846b51c apache-james-3.3.0]# java 
-Dworking.directory=/opt/apache-james-3.3.0 -jar 
server/container/guice/cassandra-guice/target/james-server-cassandra-guice.jar
2019-10-28 05:51:54,981 WARN  [main] - 
[org.apache.james.modules.mailbox.ResilientClusterProvider]- Error establishing 
Cassandra connection. Next retry scheduled in PT5S ms
com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried 
for query failed (tried: /172.17.0.2:9042 
(com.datastax.driver.core.exceptions.TransportException: [/172.17.0.2:9042] 
Cannot connect))


The error is shown when I try to run JAMES from within a Docker container.

Cassandra is up and running, and ought to be available via the IP address 
172.17.0.2, on port 9042.

[root@james ~]# ip addr
1: lo: <SNIP>
2: eth0: <SNIP>
3: eth1: <SNIP>
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
group default 
    link/ether 02:42:76:5f:17:bb brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:76ff:fe5f:17bb/64 scope link 
       valid_lft forever preferred_lft forever
10: veth81426b0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 
master docker0 state UP group default 
    link/ether 1a:70:e2:f3:7e:70 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::1870:e2ff:fef3:7e70/64 scope link 
       valid_lft forever preferred_lft forever
12: vethc13d660@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 
master docker0 state UP group default 
    link/ether 5a:fd:2d:ad:df:12 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::58fd:2dff:fead:df12/64 scope link 
       valid_lft forever preferred_lft forever

The two virtual ethernet ports are for the james and cassandra containers.

Here is the run command for cassandra:

docker run \
  -dit \
  -v /home/cassandra/conf:/opt/cassandra/latest/conf \
  -v /home/cassandra/data:/data \
  -v /home/cassandra/commitlog:/commitlog \
  -v /home/cassandra/saved_caches:/saved_caches \
  -v /home/cassandra/hints:/hints \
  -p 7000:7000 \
  -p 7001:7001 \
  -p 7199:7199 \
  -p 9042:9042 \
  -p 9160:9160 \
  --ulimit memlock=-1:-1 \
  --memory='1g' \
  --name=cassandra \
  dleangen/cassandra:3.11.4


Here is docker ps from the host:

[root@james ~]# docker ps
CONTAINER ID        IMAGE                       COMMAND             CREATED     
        STATUS              PORTS                                               
                                                       NAMES
e5cc3846b51c        dleangen/james:3.3.0        "/bin/bash"         7 minutes 
ago       Up 7 minutes                                                          
                                                         youthful_pascal
1fefe86df493        dleangen/cassandra:3.11.4   "cassandra -f"      9 minutes 
ago       Up 9 minutes        0.0.0.0:7000-7001->7000-7001/tcp, 
0.0.0.0:7199->7199/tcp, 0.0.0.0:9042->9042/tcp, 0.0.0.0:9160->9160/tcp   
cassandra

Here is the /etc/hosts file in the Cassandra container:

bash-4.2$ more /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2      1fefe86df493


Cassandra is up. I tested that it is indeed available from within the Docker 
container over 127.0.0.1.

So how the heck do I get my james container to be able to connect to it??

(I plan to use Docker Compose later… right now I’m trying to just connect my 
containers directly.)


Thank you in advance for your help!!! 😇

Cheers,
=David

Reply via email to