两个Docker容器之间的通讯出现问题

我是Docker的新手,正在尝试将运行在我的 容器中的spring boot应用程序连接到一个运行在端口6603上的

容器中的mysql服务器,两者均在同一台物理计算机上运行。事实是:如果我将spring-boot应用程序连接到

容器以便与数据库通信,则

当 到 容器中并尝试(通过Hibernate)与

容器通信时,出现以下错误:

2018-02-05 09:58:38.912 ERROR 1 --- [           main] o.a.tomcat.jdbc.pool.ConnectionPool      : Unable to create initial connections of pool.

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_111]

我的Spring Bootapplication.properties是:

server.port=8083

spring.jpa.hibernate.ddl-auto=create-drop

spring.datasource.url=jdbc:mysql://localhost:6603/mydockerdb

spring.datasource.username=root

spring.datasource.password=mypassword

在我的Spring Boot应用在端口8082上的Docker容器中运行之前,它工作正常(在正确构建Docker映像之后):

docker run -it -p 8082:8083 boot-example

回答:

按照上面的建议,Docker-compose是一种方法,但是如果您不想使用组合/组合模式。

  1. 只需使用以下内容创建您自己的网络 docker network create myNet
  2. 部署容器以侦听创建的网络 --network myNet
  3. 将您的spring.datasource.url更改为 jdbc:mysql://mymysql:6603/mydockerdb

通过使用docker demon的DNS解析,容器可以相互发现并进行通信。[默认网桥不支持DNS。使用网桥的用户定义网络。]

有关更多信息:https :

//docs.docker.com/engine/userguide/networking/

以上是 两个Docker容器之间的通讯出现问题 的全部内容, 来源链接: utcz.com/qa/424070.html

回到顶部