使用docker部署nginx+tomcat架构(2):访问mysql数据库

怼烎@ 2023-06-01 11:16 51阅读 0赞

上一篇完成了通过docker部署nginx+tomcat的基础软件架构,但是距离一个真正可用的软件架构还差得很远。其中最重要的一点是缺少数据库这个角色的存在,那么本篇就来完善这一点。

废话少说,直接进入正题。

首先拉取mysql镜像:

  1. docker pull mysql:5.7

创建本地mysql目录:

  1. mkdir -p ~/mysql/data ~/mysql/conf ~/mysql/logs
  2. chmod -R 777 ~/mysql/logs

在mysql/conf目录下创建配置文件my.cnf:

ContractedBlock.gif ExpandedBlockStart.gif

  1. # For advice on how to change settings please see
  2. # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
  3. [mysqld]
  4. #
  5. # Remove leading # and set to the amount of RAM for the most important data
  6. # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
  7. # innodb_buffer_pool_size = 128M
  8. #
  9. # Remove leading # to turn on a very important data integrity option: logging
  10. # changes to the binary log between backups.
  11. # log_bin
  12. #
  13. # Remove leading # to set options mainly useful for reporting servers.
  14. # The server defaults are faster for transactions and fast SELECTs.
  15. # Adjust sizes as needed, experiment to find the optimal values.
  16. # join_buffer_size = 128M
  17. # sort_buffer_size = 2M
  18. # read_rnd_buffer_size = 2M
  19. datadir=/var/lib/mysql
  20. socket=/var/lib/mysql/mysql.sock
  21. # Disabling symbolic-links is recommended to prevent assorted security risks
  22. symbolic-links=0
  23. log-error=/var/log/mysql/error.log
  24. pid-file=/var/run/mysqld/mysqld.pid
  25. # disabling the password validation
  26. #validate_password=off
  27. # set bind-address
  28. #bind-address=0.0.0.0

启动mysql:

  1. docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=admin -v ~/mysql/conf:/etc/mysql/conf.d -v ~/mysql/data:/var/lib/mysql -v ~/mysql/logs:/var/log/mysql mysql:5.7

644402-20190819214845902-1462228502.png

登录mysql测试下(root密码已经已经设置成了admin):

  1. mysql -uroot -p -h 172.17.0.2

644402-20190819211040956-205834333.png

看上去没什么问题?

创建tomcat的jndi数据源tomcat/conf/context.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Context>
  3. <Resource name="mysql/test"
  4. auth="Container"
  5. type="javax.sql.DataSource"
  6. driverClassName="com.mysql.jdbc.Driver"
  7. url="jdbc:mysql://172.17.0.2:3306/test"
  8. username="root"
  9. password="admin"
  10. maxActive="20"
  11. maxIdle="10"
  12. maxWait="10000" />
  13. </Context>

新建一个javaweb工程demo,并配置web.xml:

  1. <resource-ref>
  2. <res-ref-name>mysql/test</res-ref-name>
  3. <res-type>javax.sql.DataSource</res-type>
  4. <res-auth>Container</res-auth>
  5. </resource-ref>

创建测试页面testdb.jsp:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@ page import="java.sql.*" %>
  4. <%@ page import="javax.sql.*" %>
  5. <%@ page import="javax.naming.*" %>
  6. <!DOCTYPE html>
  7. <html>
  8. <head>
  9. <meta charset="UTF-8">
  10. <title>connect to mysql/test</title>
  11. </head>
  12. <body>
  13. <%
  14. Context context = new InitialContext();
  15. DataSource dataSource = (DataSource) context.lookup("java:comp/env/mysql/test");
  16. Connection conn = dataSource.getConnection();
  17. out.println("Connection.isValid: " + conn.isValid(3));
  18. conn.close();
  19. %>
  20. </body>
  21. </html>

打包demo工程上传到tomcat/webapps下,重启tomcat测试下:

  1. docker restart tomcat1
  2. docker restart tomcat2

测试下tomcat与mysql的连接是否成功:

644402-20190819222215621-356741653.png

ok, it works!

转载于:https://www.cnblogs.com/lichmama/p/11380169.html

发表评论

表情:
评论列表 (有 0 条评论,51人围观)

还没有评论,来说两句吧...

相关阅读