在上一章中,实现了本机环境下的tomcat8.5+mysql5.7,JavaWeb测试。本章试图用docker-compose实现一键部署。
文件映射相关
tomcat:
tomcat/conf/context.xml,文件,用于jndi数据库连接
tomcat/logs/,文件夹,方便查看日志文件
tomcat/webapps/projectName,项目映射
mysql
mysql/data/,文件夹,数据库数据映射
- 如果不知道宿主机数据在何处,在mysql的bash中,show global variables like “%datadir%”;
- 查看容器中数据库数据:1、 docker exec -t -i containerName /bin/bash 2、登录 mysql -u root -p 3、show databases;
- 退出bash:ctrl+p+q
- 查看容器ip:docker inspect 容器名|findstr IPAddress,如果是linux系统,findstr改为grep
mysql/logs/,文件夹,日志文件映射
可能的报错:
java.net.ConnectException: Connection refused
尝试了没有用的:
- command: --default-authentication-plugin=mysql_native_password
- network_mode: “host”
最终解决了,注意几点:
- 作为容器之后tomcat与mysql不在一台机器上,tomcat之前的配置中连接数据库部分的localhost,均要改成mysql容器的容器名
- mysql的配置文件中,bind-address=0.0.0.0需要注释掉
mysql: Ignoring the redo log due to missing MLOG_CHECKPOINT
docker ps 看了一下,mysql一直在重启。日志中有报错InnoDB: Ignoring the redo log due to missing MLOG_CHECKPOINT…
解决方案:查看映射的 mysql/data/ 文件夹下是否有 ib_logfile0 ib_logfile1 两个文件,有则删除
java.sql.SQLException: No suitable driver
- 没有映射 tomcat/conf/context.xml