连接器拒绝连接(在群中)

时间:2018-03-27 13:50:56

标签: java docker networking docker-swarm

我有一个docker swarm设置,其中服务在覆盖网络中注册。服务之间的通信工作正常,但我得到一个"连接被拒绝"从我连接到外部数据库的一个服务。该服务是基于Java的应用程序(spring boot)。

  • 连接是用其IP定义的(jdbc:mysql://192.168.130.141:3306 / database?autoReconnect = true)
  • 我已经检查过我可以从容器docker exec -it e093 ping 192.168.130.141给出预期答案
  • 来ping服务器
  • 我已经重新检查了(4次)我的凭据
  • 我可以从主机连接到数据库
  • 主机是Ubuntu 16.04.4 LTS

我正在运行docker 18.03.0-ce,确切的错误是

java.net.ConnectException: Connection refused (Connection refused) at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_151]

我会在这里跳过完整的堆栈跟踪。

非常感谢任何帮助

- 编辑 -

让我澄清一下,数据库是Galera集群,我尝试连接的IP是它前面的负载均衡器(HAProxy)。我知道设置工作正常,因为我有其他应用程序在这个问题上连接到集群以及服务本身(当不在docker容器中时)。

所以,据我所知,我的连接信息是正确的,但它并没有从docker服务内部连接。

1 个答案:

答案 0 :(得分:-1)

你能展示你的docker-compose.yml吗?在端口中,您必须公开您需要访问的端口。

ports:
   - 3306:3306

您可以使用容器内的命令

安装telnet以测试端口是否打开
docker container ls
docker exec -it conainerid bash
apt-get update
apt-get install telnet