业界动态
docker在java web_在docker中部署java web项目
2024-12-26 18:16

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

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

安装 Docker

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

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

创建 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,把它改成你想要的就可以了。

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

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

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

然后使用 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 文件有哪些东西。我的 .sql 文件里只有几张表。这个时候回到 mysql 容器中用 show databases ; 查看容器中的数据库,这时会显示有db_mps 数据库。到这里为止,就创建好了 mysql 容器,并且在容器中部署了一个名为 db_mps 的数据库。

创建 Web Container接下来创建部署web服务的容器1[[email protected] ~]# 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 目录下,命令如下: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 在容器中的路径,是固定的,直接复制即可。

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

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

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

    以上就是本篇文章【docker在java web_在docker中部署java web项目】的全部内容了,欢迎阅览 ! 文章地址:https://sicmodule.kub2b.com/news/10324.html
     栏目首页      相关文章      动态      同类文章      热门文章      网站地图      返回首页 企库往资讯移动站 https://sicmodule.kub2b.com/mobile/ , 查看更多   
最新文章
手机单扬声器和双扬声器有什么区别?原来差别这么大手机扬声器「手机单扬声器和双扬声器有什么区别?原来差别这么大」
随着手机的普及和发展,音频体验成为消费者选择手机的重要因素之一。而在手机音频方面,单扬声器和双扬声器是常见的设计方案。那
手机维修知识大全维修手机「手机维修知识大全」
修理手机维修知识大全手机是高科技精密电子产品。工作原理、制造工艺、软件和硬件、测试、技术标准在所有的电器设备中是最复杂的
2k分辨率手机有哪些(2k分辨率的手机哪款性价比最高)
  关于《2K分辨率手机有哪些》的文章  随着科技的不断发展,手机已经成为了我们日常生活中不可或缺的一部分。而在手机的各种
红手指云手机苹果版(红雀浏览器) v1.0.23 iPhone版红手指云手机「红手指云手机苹果版(红雀浏览器) v1.0.23 iPhone版」
红手指手游专用虚拟手机是一款非常实用的手机挂机软件,在这里玩家随时随地离线挂机、自动帮助你闯关升级,非常强大的游戏挂机神
1手机2(一加11手机)
  《手机2》:探索科技与生活的无限可能  在当今数字化时代,智能手机无疑是我们生活中不可或缺的一部分。随着科技的飞速发
手机NFC是什么?怎么使用?手机nfc「手机NFC是什么?怎么使用?」
但很多人不知道的是,除了这三种无线通信技术外,很多智能手机里还有一种无线通信技术,那就是NFC。2004年,飞利浦半导体,诺基
360手机 官网(360手机官网入口)
  探索《360手机官网》:一站式手机技术与服务的平台  在当今数字化时代,手机已经成为我们日常生活中不可或缺的一部分。而
关于手机电池的冷知识:机身温度过高,会永久降低手机电池容量手机电量「关于手机电池的冷知识:机身温度过高,会永久降低手机电池容量」
相信大家在日常使用手机时,最关注的就是我们手机的电量还剩多少,尤其是现在我们一般出门都不带现金,直接通过手机进行支付,所
260手机助手(360手机助手官方版下载)
  《260手机助手》:一站式手机管理和服务的新选择  随着智能手机的普及,我们的生活越来越离不开手机。为了更好地管理和优
小米发布迄今最强被动散热系统,两倍于VC散热,原神满帧运行手机散热「小米发布迄今最强被动散热系统,两倍于VC散热,原神满帧运行」
你的手机“烫”吗? 玩局游戏,瞬间化身暖手宝?拍拍视频就过热,需要“冷静”一下才能继续使用!充电是很快,温度升的也很快…