无法使用Docker将Java程序连接到MySQL
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了无法使用Docker将Java程序连接到MySQL,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2621字,纯文字阅读大概需要4分钟。
内容图文
![无法使用Docker将Java程序连接到MySQL](/upload/InfoBanner/zyjiaocheng/904/a51cbe070b044be18fd36a5cf18abf84.jpg)
我正在学习docker并试图将使用Tomcat的Java Web应用程序放到容器中.我遵循了一些基本的教程,但我找不到适合我的解决方案.如果我运行我的数据库和Java容器我得到错误:
SEVERE: 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)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:404)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:981)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:339)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2286)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2085)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
MySQL Dockerfile
FROM mysql:latest
ENV MYSQL_DATABASE=db_name #name of db that is required by Java program
由……运营:
docker run --name db_name -e MYSQL_ROOT_PASSWORD=root -d db_name
Java Dockerfile
FROM tomcat:7.0.70-jre8
ADD deploy /usr/local/tomcat/webapps #extracted .war
ADD jdbc /usr/local/tomcat/lib #MySQL jdbc drivers
ADD context /usr/local/tomcat/conf #context.xml
由……运营:
docker run --name app_name --link db_name:db_name -p 8080:8080 -d app_name
当我在Eclipse中本地运行时,整个配置运行正常.
解决方法:
因为你没有提供完整的堆栈tace,这将显示tomcat正在使用的连接字符串,我不得不猜测你没有为你的tomcat conainer提供正确的连接字符串.你必须提供一个连接字符串,如:
jdbc:mysql://database_container_name:3306/database_name
进入你的tomcat配置.
BTW:
您应该重新排列Tomcat Dockerfile中的行
FROM tomcat:7.0.70-jre8
ADD jdbc /usr/local/tomcat/lib #MySQL jdbc drivers
ADD context /usr/local/tomcat/conf #context.xml
ADD deploy /usr/local/tomcat/webapps #extracted .war
因为docker可以缓存构建层.使用旧订单,您的战争是图像的第一层,每次您对应用程序进行更改时都会更改,导致每次都重建folliwing图层,即使它们没有更改.新订单更好地使用了docker chache.使用此顺序,永远不会更改MySQL驱动程序,并且配置也不会像战争一样快速地改变.
在这个例子中,效果可能是最小的,但是如果你用更多的图层和更长的构建步骤构建更大的图像(比如apt-get install smth),chache可以显着加快你的构建速度.
内容总结
以上是互联网集市为您收集整理的无法使用Docker将Java程序连接到MySQL全部内容,希望文章能够帮你解决无法使用Docker将Java程序连接到MySQL所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。