www.icesr.com
IT运维工程师的摇篮

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

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


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

  • 既然是docker的实战,第一步自然是检查docker是不是安装了,是不是正常运行的,这里我用的是CentOS 7的Linux系统,安装好docker之后我从镜像市场中拉取了我们所需的tomcat镜像和MySQL镜像,如下图示:
    docker镜像
    由于这两个镜像比较大,所以建议提前拉取。

  • 镜像拉取好了之后我们就创建运行应用所需的容器,首先创建一个MySQL容器
    [root@kubernetes ~]# docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
    解释一下上面命令的含义:

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

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

<code>docker <span class="hljs-keyword">exec</span> -it mysql bash</code>

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

连接数据库
这里的ip地址就是我的虚机ip,指定连接到我虚机的3306端口,也就是会连接到mysql容器,因为主机的3306端口是和容器的3306相连接的,连接名随便取测试连接成功后点击确定就好了
– 下一步就是把我们java web应用的数据库导入到mysql容器的数据库中了。
这个步骤我们直接在Navicat中就可以完成了
新建一个数据库

我新建一个数据库名为db_mps的数据库,字符集和排序规则不选,它会根据我的.sql
文件自动识别。
新建db_mps数据库
这里运行玩.sql文件之后刷新表,或者刷新数据库,这取决于你的.sql文件有哪些东西。我的.sql文件里只有几张表。这个时候你可以回到mysql容器中用show databases;查看容器中的数据库,这时会显示有db_mps
数据库。到这里为止,我们就创建好了mysql容器,并且在容器中部署了一个名为db_mps的数据库。
这里写图片描述

  • 接下来我们创建部署web服务的容器
<code>[root<span class="hljs-variable">@kubernetes</span> ~]<span class="hljs-comment"># docker run -itd -p 80:8080 --name myweb tomcat</span>
</code>

这里写图片描述
这里所用的参数在创建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中的数据。我这里的工程文件如下图所示:
    java数据库配置页面
    将工程文件中连接数据库的配置信息改成我们容器的ip地址即可。然后我们导出war包工程文件,我的开发软件是eclipse。直接用复制粘贴把war放入我的虚机里,我放在/mnt目录下。
    这里写图片描述
    接下来要将/mnt目录下的war包文件放到myweb容器下的webapps目录下,命令如下:

<code>[root<span class="hljs-variable">@kubernetes</span> ~]<span class="hljs-comment">#  docker cp /mnt/MPS_system.war fa0be9ddda5c1d667be886ad28e9895e37d17b839677e215a0dfb7e961b6c974:/usr/local/tomcat/webapps</span>
</code>

这个命令是把在/mnt下的MPS_system.war文件拷贝到myweb容器下的webapps目录下。里面很长的那个字符串是容器的id,这里用myweb应该也可以(myweb是我tomcat容器的容器名字),后面是webapps在容器中的路径,是固定的,直接复制即可。
这里写图片描述
可以看到tomcat容器已经自动帮我们解压并部署了war包工程文件,到此为止,部署工作全部完成!

  • 验收一下
    部署完成之后我们就该看看是否成功了,我们在浏览器中输入虚机的ip+war包文件名,如下图:
    这里写图片描述
    访问成功!
    我们试试登录是否正常,如果登录正常说明myweb是访问到了mysql数据库的,因为登录信息保存在mysql的表中。
    这里写图片描述
    登录成功,成功进入后台!至此,在容器中部署java web应用全部完成。

未经允许不得转载:冰点网络 » 关于如何在docker中利用tomcat和MySQL容器部署java web应用的详细步骤

分享到:更多 ()

评论 抢沙发

评论前必须登录!