-------------------------------------实现多容器部署SpringBoot JavaWeb项目-------------------------------------------
项目源码地址:https://github.com/jinqiwen/springBoot-threeProject
1.这里我们要连接mysql,而且mysql的容器和SpringBoot Javaweb项目的容器分离开
注意在application.xml中编写mysql配置时,指定容器的名字为mysql,从而保证容器间的通信
为什么不用mysql 的ip?因为ip是常常发生变化的,使用名字不会,降低了容器间通信的难度和复杂性
2.在本地测试无误的情况下即可打成war包,注意要跳过测试
项目右击--》open in terminal---》输入mvn package -Dmaven.test.skip=true
3.在文件夹中放入Dockerfile 和刚打包好的springBoot项目,dockerfile内容如下:(这里我们将springboot放入tomcat中运行)
FROM hub.c.163.com/library/tomcat:8.5
MAINTAINER jinqiwen
COPY demo1-0.0.1-SNAPSHOT.war /usr/local/tomcat/webapps
注意jdk1.8 对应 tomcat8.5,否则会报错
4.将本地mysql对应的库导出,用于之后mysql容器中的库,这里我们的存放路径为:
进入docker虚拟机中:
在网易云的镜像中心下载mysql镜像,命令如下:(建议本地mysql的版本和镜像mysql的版本一致,免得出现版本问题)
docker pull hub.c.163.com/library/mysql:5.5.52
运行镜像:
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=leecx hub.c.163.com/liberary/mysql:5.5.52
存入数据
docker ps查看mysql的容器id
docker exec -it +mysql的容器id+/bin/bash
mysql -u root -p
123456
source +sql文件的存储路径(如: source /usr/local/shiyan1.sql)
完成,mysql容器中已经有了对应的数据库和表,建议在启动mysql容器时加入数据卷绑定,保证容器出现问题时,数据库中的数据不会丢失
5.docker上操作springBoot项目
首先生成镜像:
进入Dockerfile所在的目录,输入
docker build -t demo .(注意最后有个点)
启动demo项目,输入
docker run -d -p 8080:8080 --name webdemo --link mysql demo(注意一定要加--link,这样才能保证项目连上mysql,从而实现mysql的基础操作)
查看项目是否有启动成功
docker ps查看springBoot项目的容器id
docker exec -it + 容器的id+ /bin/bash
cd logs
tail -300 catalina.2018-05-11.log(这里需要修改下时间哦)
如果没有报错就可以在浏览器上访问项目了,输入地址,如下,其中192.168.99.100是docker虚拟机的ip,后面分别是tomcat中项目的名称和requestMapping