您的位置:首页 > 运维架构 > Docker

关于如何在docker中利用tomcat和MySQL容器部署java web应用的详细步骤

2018-01-21 15:24 1726 查看

在学习了docker的基本知识之后,自然就应该练练手了,这次来讲讲如何在docker容器中部署一个java web应用的详细步骤

(说明:我使用的是主机windows系统,在vmware workstations中运行CentOS 7的虚拟机,虚拟机的ip为192.168.190.130)

既然是docker的实战,第一步自然是检查docker是不是安装了,是不是正常运行的,这里我用的是CentOS 7的Linux系统,安装好docker之后我从镜像市场中拉取了我们所需的tomcat镜像和MySQL镜像,如下图示:



由于这两个镜像比较大,所以建议提前拉取。

镜像拉取好了之后我们就创建运行应用所需的容器,首先创建一个MySQL容器

[root@kubernetes ~]# docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql


解释一下上面命令的含义:

run -itd:在docker中运行一个带交互式的且能后台运行的容器。
--name mysql:给容器命名为mysql,注意name前面有两个小横杠,你也可以自己随意命名。
-p 3306:3306:这里是指将容器的3306端口映射到主机的3306端口,冒号前面指的是主机,后面指的是容器。
-e MY_ROOT_PASSWORD=123456:这行命令的意思是在创建mysql容器的时候在容器中创建一个root用户,密码是123456,要是不想用123456,把它改成你想要的就可以了。


下面我们进入这个容器看看:



docker exec -it mysql bash


docekr exec命令用来进入容器内部。进入之后可以使用 service mysql start 命令来查看当前mysql服务的状态,一般情况下都是runing的,如果不是,自行启动一下就可以了。

然后使用mysql -u root -p 回车后提示输入密码,我的是123456.输入回车之后就会进入mysql的命令行了! 可用show databases; 查看一下mysql中有哪些数据库。(这些都是为了让大家看看数据库,并不需要做什么操作)

注:这里我啰嗦一句,现在我们在mysql容器的命令行中,我们可以另外打开一个终端进行下面的操作,也可以使用 ctrl+p+q(按住ctrl不放,先按p键,再按q键。全部松开后回车就可以回到linux命令行中)来退出mysql容器但不让容器停止。

现在我们可以使用一个工具连接到数据库,并且将我们的数据库上传到docker的mysql容器中。



Navicat这个工具我也不做过多介绍,自行百度,总之是我认为最好用的数据库管理工具,大家也能看到它可以连接几乎所有的主流关系型数据库,如果需要绿色版可以留言或私信我。



这里的ip地址就是我的虚机ip,指定连接到我虚机的3306端口,也就是会连接到mysql容器,因为主机的3306端口是和容器的3306相连接的,连接名随便取测试连接成功后点击确定就好了

- 下一步就是把我们java web应用的数据库导入到mysql容器的数据库中了。

这个步骤我们直接在Navicat中就可以完成了



我新建一个数据库名为db_mps的数据库,字符集和排序规则不选,它会根据我的.sql

文件自动识别。



这里运行玩.sql文件之后刷新表,或者刷新数据库,这取决于你的.sql文件有哪些东
9e4a
西。我的.sql文件里只有几张表。这个时候你可以回到mysql容器中用show databases;查看容器中的数据库,这时会显示有db_mps

数据库。到这里为止,我们就创建好了mysql容器,并且在容器中部署了一个名为db_mps的数据库。



接下来我们创建部署web服务的容器

[root@kubernetes ~]# docker run -itd -p 80:8080 --name myweb tomcat




这里所用的参数在创建mysql容器时都解释过了,就不再阐述。我们进入到myweb容器中可以看到有一个webapps的目录,我们需要把java web应用的工程文件导出为war包,然后放到这里的webapps目录下。这样tomcat会帮我们解压部署。现在已经创建好了myweb容器,我们可以在浏览器输入192.168.190.130:80检查一下tomcat是否部署成功。



那看到这个页面说明我们myweb中的tomcat服务已经是启动的,如果没有出现tomcat部署成功的这个页面,你需要进入myweb的bin目录找到 catalina.sh文件并且run起来。

tomcat服务已经部署好了,接下来我们就要导入war包工程文件了

在导入war包之前,我们要查看一下mysql容器的ip,然后去java web的工程文件中访问数据库的文件里修改访问的数据库,如下图所示:



图上可以看到,这里的ip是172.17.0.2,也就是说我们如果部署web应用,就要在工程文件中指定访问的数据库的ip地址为172.17.0.2,这样web应用部署在tomcat上才会去读取mysql中的数据。我这里的工程文件如下图所示:



将工程文件中连接数据库的配置信息改成我们容器的ip地址即可。然后我们导出war包工程文件,我的开发软件是eclipse。直接用复制粘贴把war放入我的虚机里,我放在/mnt目录下。



接下来要将/mnt目录下的war包文件放到myweb容器下的webapps目录下,命令如下:

[root@kubernetes ~]#  docker cp /mnt/MPS_system.war fa0be9ddda5c1d667be886ad28e9895e37d17b839677e215a0dfb7e961b6c974:/usr/local/tomcat/webapps


这个命令是把在/mnt下的MPS_system.war文件拷贝到myweb容器下的webapps目录下。里面很长的那个字符串是容器的id,这里用myweb应该也可以(myweb是我tomcat容器的容器名字),后面是webapps在容器中的路径,是固定的,直接复制即可。



可以看到tomcat容器已经自动帮我们解压并部署了war包工程文件,到此为止,部署工作全部完成!

验收一下

部署完成之后我们就该看看是否成功了,我们在浏览器中输入虚机的ip+war包文件名,如下图:



访问成功!

我们试试登录是否正常,如果登录正常说明myweb是访问到了mysql数据库的,因为登录信息保存在mysql的表中。



登录成功,成功进入后台!至此,在容器中部署java web应用全部完成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: