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