动力节点旗下在线教育品牌  |  咨询热线:400-8080-105 学Java全栈,上蛙课网

老师好 项目在本地运行没问题,打war包后再docker容器里启动报错

代码小兵

2019.12.22

下边是项目镜像在docker容器里 启动的报错信息,麻烦老师有空帮看一下吧,多谢了

22-Dec-2019 03:14:07.246 INFO [localhost-startStop-1] org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
22-Dec-2019 03:14:08.806 WARNING [localhost-startStop-1] org.hibernate.util.JDBCExceptionReporter.logExceptions SQL Error: 0, SQLState: 08S01
22-Dec-2019 03:14:08.815 SEVERE [localhost-startStop-1] org.hibernate.util.JDBCExceptionReporter.logExceptions Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.NoRouteToHostException: No route to host (Host unreachable)

STACKTRACE:

java.net.SocketException: java.net.NoRouteToHostException: No route to host (Host unreachable)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2555)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(DriverManager.java:664)
    at java.sql.DriverManager.getConnection(DriverManager.java:208)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:291)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:277)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:259)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:240)
    at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:76)

 

 

 

添加回答

回答(1)

军哥

老师参与

根据错误提示,显示为网络连接不通导致,即docker容器中的项目去连接mysql数据库连接不上;

你检查一下mysql数据库在哪里?

如果mysql数据库也在容器里,那么有两种方式去连接,1、使用容器的ip来连接而不是通过宿主机的ip去连接,2、容器里的mysql启动时映射端口到宿主机,然后通过宿主机的ip和映射的端口去连接;

如果mysql在宿主机上,那么直接通过宿主机的ip和端口连接即可;

时间:12-22 11:40 查看回复 (1) 回复 0 0 举报

代码小兵

老师 我的mysql数据库在容器里,本地测试的时候,项目连容器里的mysql   指定的IP就是linux的IP地址,而且指定了端口映射,可以正常访问, 项目打war包在容器里启动时 就不能连数据库了

时间:12-22 17:29 回复 举报

回复