1.分析
查看源代碼
既然無法建立連接,那先看下是如何建立連接的。登錄到myweb的docker容器里面,查看index.jsp文件,主要內容如下:
Class.forName("com.mysql.jdbc.Driver").newInstance();
try{
Class.forName("com.mysql.jdbc.Driver");
String ip=System.getenv("MYSQL_SERVICE_HOST");
String port=System.getenv("MYSQL_SERVICE_PORT");
ip=(ip==null)?"localhost":ip;
port=(port==null)?"3306":port;
System.out.println("Connecting to database...");
System.out.println("jdbc:mysql://"+ip+":"+port+"?useUnicode=true&characterEncoding=UTF-8");
conn = java.sql.DriverManager.getConnection("jdbc:mysql://"+ip+":"+port+"?useUnicode=true&characterEncoding=UTF-8", "root","123456");
stmt = conn.createStatement();
就是用jsp創建了一個連接,連接的地址通過ENV方式注入。即在myweb-rc.yaml中配置的MYSQL_SERVICE_HOST和MYSQL_SERVICE_PORT環境變量指定。
登陸myweb應用查看這兩個環境變量是否有問題:
[root@localhost ~]# kubectl exec -ti myweb-cp4gm -- /bin/bash
root@myweb-cp4gm:/usr/local/tomcat# echo $MYSQL_SERVICE_HOST
10.254.15.45
root@myweb-cp4gm:/usr/local/tomcat# echo $MYSQL_SERVICE_PORT
3306
可以看出環境變量也是沒有問題的。
解決方法
考慮到可能是mysql版本的問題,修改mysql版本為5.7,並且設置來直接使用本地鏡像。
https://blog.csdn.net/yinanmo5569/article/details/81352578