我正在学习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.(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.(ConnectionImpl.java:795)

at com.mysql.jdbc.JDBC4Connection.(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可以显着加快你的构建速度.

标签:java,docker,mysql,tomcat,tomcat7

来源: https://codeday.me/bug/20190702/1353396.html

java不能连接mysql,无法使用Docker将Java程序连接到MySQL相关推荐

  1. win7 docker java开发环境变量_java – Docker. Spring应用程序.设置和获取环境变量

    我正试图将我的Spring应用程序停靠. 问题: 我无法从我的Spring应用程序中获取docker容器中的环境变量. Spring配置(2个选项,单独试用) 也试过java URI dbUrl = ...

  2. java代码连接oracle数据库连接_在JAVA中连接Oracle数据库(例子)

    * TODO 要更改此生成的文件的模板,请转至 * 窗口 - 首选项 - java - 代码样式 - 代码模板 */ package person.fane.test; import java.sql ...

  3. java中远程连接忽略证书_忽略Java中的自签名证书

    java中远程连接忽略证书 我在职业生涯中遇到过几次问题,就是我们有时希望允许自签名证书用于开发或测试目的. Google的快速搜索显示了多年来无数Java开发人员遇到的麻烦. 根据确切的证书问题,您 ...

  4. mysql proxy无法连接_客户端无法通过4040端口连接到mysql proxy

    最近在用mysqlproxy,理想情况下是这样的:客户端连接mysqlproxy,然后mysqlproxy根据lua脚本把请求分发到下面的两个mysql服务器,这两个mysql服务器互为主从.但设置好 ...

  5. asp.net使用mysql教程_在C#程序中使用MYSQL数据库

    一提起mysql数据库,好像就是在说java,jsp或者php,其实在所有程序中都可以使用mysql 数据库,其它的程序使用my sql数据库的方法是使用my sql 提供的odbc驱动,在.net ...

  6. 应用程序连接不到mysql_Docker无法将应用程序连接到MySQL

    docker compose默认情况下会创建虚拟网络,所有的容器/服务都可以通过一个IP地址相互连接.通过使用links.depends_on或网络别名,它们可以通过主机名相互联系.在您的例子中,主机 ...

  7. vc6.0 点击鼠标获取mysql数据库所在行_VC6.0连接到mysql数据库

    (1)打开VC6.0 工具栏Tools菜单下的Options选项,在Directories的标签页中右边的"Show directories for:"下拉列表中选中"I ...

  8. mysql with-embedded-server_终于成功实验程序实现Embedded MySQL Server启动(C/C++)

    今天,碰巧有人问,说写的代码server_init,老是失败,我不信,试了一番,大费周折,总算成功. 有兴趣的,不妨自己动手一试,蛮有意思的. 我机器上原本有一个解压缩版的MySQL5.0.9,位于D ...

  9. java ado连接mysql_【转】Java JDBC对应C# ADO连接数据库之区别

    JDBC对应C#连接数据库之区别 之前一直在用java,最近因为找了.NET的工作,开始学习.NET. 今天也是查了好多资料,但是一直没有看到和JDBC之间的对比博文,开始也是一头雾水! 但是功夫不负 ...

最新文章

  1. php ajax轮询推送,[PHP]PHP+AJAX实现轮询代码
  2. 大学计算机演示文稿作业,(大学计算机作业.doc
  3. [整理]Git使用文章整理
  4. 合理的布局,绚丽的样式,谈谈Winform程序的界面设计
  5. 此项目的默认Web访问模式设置为文件共享, 但是无法从路径(此为转贴)
  6. Spring MVC 3模板和Apache Tiles
  7. Unitest框架的使用(三)TestSkip和TestSuite方法
  8. linux svn 客户端安装
  9. Python训练文本情感分析模型
  10. 图像标签制作工具之labelImg-windows的安装与使用
  11. java中实现热门搜索的逻辑_Java编程的逻辑 (45) - 神奇的堆
  12. 光辉岁月--beyond 献给麦德拉
  13. 笔记本按开机键没反应怎么办
  14. Eclipse+Java+Swing实现宠物商店管理系统
  15. 道琼斯200万高危人群名单泄露,从AWS上
  16. Spring 文件路径
  17. Spring Security总结之如何让认证失败消息自定义在前端页面显示(一)
  18. 希腊罗马神话传说和《圣经》中的英语成语典故
  19. python sdk是什么意思_sdk什么意思
  20. 微软面试100题2010年版全部答案集锦(含下载地址)

热门文章

  1. 基于Eigen库和Matlab计算非线性多元函数最小值
  2. 【全网唯一】全网唯一能够跑通的,跑不通你来找我~用node.js完成微信支付下单功能,且只需要一个文件wxpay.js就解决业务流程的node.js程序
  3. SQLite3简单C++包装类源码示例
  4. Unity 3D为策略游戏创建地图学习教程
  5. big endian little endian
  6. 互联网公司java面试题(一)
  7. Spring Boot 整合Redis 实现缓存
  8. Y15BeTa蜂鸣器唱歌程序-演奏版
  9. Django模板系统和admin模块
  10. 没有什么不可能(1)