docker在java web_在docker中部署java web项目

本文介绍了如何在Docker容器中部署Java Web应用的详细步骤,包括安装Docker,拉取Tomcat和MySQL镜像,创建并配置MySQL Container,导入数据库,创建Web Container,部署war包,以及最后的验证过程。
摘要由CSDN通过智能技术生成

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

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

安装 Docker

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

323cb0ea6a048528009893a4b36f01f7.png

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

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

[[email protected] ~]# docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

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

2

3

4run -itd:在 docker 中运行一个带交互式的且能后台运行的容器。

--name mysql:给容器命名为 mysql,注意 name 前面有两个小横杠,你也可以自己随意命名。

-p 3306:3306:这里是指将容器的 3306 端口映射到主机的 3306 端口,冒号前面指的是主机,后面指的是容器。

-e MY_ROOT_PASSWORD=123456:这行命令的意思是在创建 mysql 容器的时候在容器中创建一个 root用户,密码是 123456,要是不想用 123456,把它改成你想要的就可以了。

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

7e42c80b30c6a4025b34b4e1e27d0707.png1docker 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 容器中。

d7d49a1e76fd95ee489a6aa5640a29a9.png

( Navicat 是我认为最好用的数据库管理工具。)

1b5d2f472dc6e2b47fe80234f296abc8.png

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

%E6%96%B0%E5%BB%BA%E4%B8%80%E4%B8%AA%E6%95%B0%E6%8D%AE%E5%BA%93.jpg?raw=true

新建一个数据库名为 db_mps 的数据库,字符集和排序规则不选,它会根据 .sql 文件自动识别。

%E6%96%B0%E5%BB%BAdb_mps%E6%95%B0%E6%8D%AE%E5%BA%93.jpg?raw=true

这里运行完 .sql 文件之后刷新表,或者刷新数据库,这取决于 .sql 文件有哪些东西。我的 .sql 文件里只有几张表。这个时候回到 mysql 容器中用 show databases ; 查看容器中的数据库,这时会显示有db_mps 数据库。到这里为止,就创建好了 mysql 容器,并且在容器中部署了一个名为 db_mps 的数据库。

db_mps%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93.jpg?raw=true

创建 Web Container接下来创建部署web服务的容器1[[email protected] ~]# docker run -itd -p 80:8080 --name myweb tomcat

%E9%83%A8%E7%BD%B2web%E6%9C%8D%E5%8A%A1%E7%9A%84%E5%AE%B9%E5%99%A8.jpg?raw=true

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

tomcat%E6%98%AF%E5%90%A6%E9%83%A8%E7%BD%B2.jpg?raw=true

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

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

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

mysql%E5%AE%B9%E5%99%A8%E7%9A%84ip.jpg?raw=true

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

%E9%83%A8%E7%BD%B2web%E5%BA%94%E7%94%A8.jpg?raw=true

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

mnt%E7%9B%AE%E5%BD%95%E4%B8%8B.jpg?raw=true

部署、检验

接下来要将 /mnt 目录下的 war 包文件放到 myweb 容器下的 webapps 目录下,命令如下:1[[email protected] ~]# docker cp /mnt/MPS_system.war fa0be9ddda5c1d667be886ad28e9895e37d17b839677e215a0dfb7e961b6c974:/usr/local/tomcat/webapps

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

webapps%E5%9C%A8%E5%AE%B9%E5%99%A8%E4%B8%AD%E7%9A%84%E8%B7%AF%E5%BE%84.jpg?raw=true

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

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

%E9%AA%8C%E6%94%B6%E4%B8%80%E4%B8%8B%20.jpg?raw=true

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

%E8%AE%BF%E9%97%AE%E6%88%90%E5%8A%9F.jpg?raw=true

登录成功,成功进入后台!至此,在容器中部署java web应用全部完成。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值