Docker实战 - 将Web项目打成war包部署到tomcat容器里运行

文章目录

  • [1. 实战概述](#1. 实战概述)
  • [2. 实战步骤](#2. 实战步骤)
    • [2.1 准备工作](#2.1 准备工作)
    • [2.2 创建数据库连接](#2.2 创建数据库连接)
      • [2.2.1 启动mysql容器](#2.2.1 启动mysql容器)
      • [2.2.2 在Navicat里创建数据库连接](#2.2.2 在Navicat里创建数据库连接)
    • [2.3 创建数据库和导入脚本](#2.3 创建数据库和导入脚本)
      • [2.3.1 创建数据库](#2.3.1 创建数据库)
      • [2.3.2 导入数据库脚本](#2.3.2 导入数据库脚本)
      • [2.3.3 查看表记录](#2.3.3 查看表记录)
    • [2.4 Web项目打包](#2.4 Web项目打包)
      • [2.4.1 修改数据库IP地址](#2.4.1 修改数据库IP地址)
      • [2.4.2 将Web项目打成war包](#2.4.2 将Web项目打成war包)
    • [2.5 启动tomcat容器](#2.5 启动tomcat容器)
    • [2.6 测试部署在容器里的Web项目](#2.6 测试部署在容器里的Web项目)
      • [2.6.1 显示项目首页](#2.6.1 显示项目首页)
      • [2.6.2 显示登录页面](#2.6.2 显示登录页面)
      • [2.6.3 测试用户登录功能](#2.6.3 测试用户登录功能)
      • [2.6.4 显示【家用电器】商品](#2.6.4 显示【家用电器】商品)
      • [2.6.5 选购商品放入购物车](#2.6.5 选购商品放入购物车)
  • [3. 实战总结](#3. 实战总结)

1. 实战概述

  • 本实战通过 Docker 容器化部署 SimonShop 电商项目:基于自定义 Tomcat 和 MySQL 镜像,创建数据库并导入脚本,修改 Web 项目连接地址为 host.docker.internal:3307,打包 WAR 文件挂载至容器,成功实现用户登录与商品浏览功能,验证了容器间通信及 Web 应用正常运行。

2. 实战步骤

2.1 准备工作

  • 拉取mysql:latestubuntu:latest镜像。进入ubuntu容器,下载、安装和配置tomcat-10.1.49,利用docker commit命令提交镜像,改名为tomcat:10.1.49。进入mysql容器,设置密码、授权任意主机('root'@'%')访问MySQL全部数据库,利用docker commit命令提交镜像,改名为mysql:9.5.0
  • 执行命令:docker images

2.2 创建数据库连接

2.2.1 启动mysql容器

  • 执行命令

    shell 复制代码
    docker run -d ^
      --name mysql-server ^
      -e MYSQL_ROOT_PASSWORD=903213 ^
      -p 3307:3306 ^
      mysql:9.5.0
  • 结果说明 :该命令成功启动了一个名为 mysql-server 的 MySQL 容器,使用默认镜像,设置 root 密码为 903213,并将宿主机 3307 端口映射到容器的 3306 端口,MySQL 版本为 9.5.0,容器运行正常。

2.2.2 在Navicat里创建数据库连接

  • 设置连接名 - docker-mysql,主机名 - localhost,端口 - 3307,用户名 - root,密码 - 903213
  • 打开创建的数据库连接 - docker-mysql

2.3 创建数据库和导入脚本

2.3.1 创建数据库

  • 创建simonshop数据库,字符编码 - utf8mb4
  • 单击【确定】按钮
  • 打开simonshop数据库

2.3.2 导入数据库脚本

  • 运行数据库脚本 - D:\WebProjects\simonshop.sql
  • 单击【开始】按钮,可以看到,脚本导入成功

2.3.3 查看表记录

  1. 查看用户表记录
  2. 查看类别表
  3. 查看商品表
  4. 查看订单表

2.4 Web项目打包

2.4.1 修改数据库IP地址

  • localhost:3306改成host.docker.internal:3307

2.4.2 将Web项目打成war包

  • 打包录屏演示
  • 查看生成的war包
  • 更名为simonshop.war保存到D:\tmp目录

2.5 启动tomcat容器

  • 执行命令

    shell 复制代码
    docker run -d ^
      --name mymaster ^
      -p 8080:8080 ^
      -v D:/tmp/simonshop.war:/usr/local/apache-tomcat-10.1.49/webapps/simonshop.war ^
      tomcat:10.1.49 ^
      /usr/local/apache-tomcat-10.1.49/bin/catalina.sh run
  • 结果说明 :该命令成功启动了一个名为 mymaster 的 Tomcat 容器,将宿主机的 8080 端口映射到容器内,并挂载本地 WAR 文件至 Tomcat webapps 目录,使用指定版本 Tomcat 运行应用,容器运行正常。

2.6 测试部署在容器里的Web项目

2.6.1 显示项目首页

  • 访问http://localhost:8080/simonshop/

2.6.2 显示登录页面

  • 单击首页里的【跳转到登录页面】按钮

2.6.3 测试用户登录功能

  • 输入正确的用户名和密码(郑晓红:11111)
  • 单击【登录】按钮,跳转到显示商品类别页面

2.6.4 显示【家用电器】商品

  • 在类别页面单击【家用电器】按钮

2.6.5 选购商品放入购物车

  • 将一些商品加入购物车

3. 实战总结

  • 本次实战成功实现了基于 Docker 的 SimonShop 电商系统容器化部署。通过自定义构建 Tomcat 10.1.49 和 MySQL 9.5.0 镜像,合理配置容器网络与端口映射(MySQL 使用 3307 端口),确保宿主机与容器间、容器与容器间的正常通信。在 Navicat 中完成数据库创建与脚本导入,并将 Web 项目中的数据库连接地址调整为 host.docker.internal:3307,解决容器内访问宿主机服务的问题。最终通过挂载 WAR 包启动 Tomcat 容器,成功访问应用并验证用户登录、商品分类浏览等核心功能。整个过程体现了 Docker 在环境隔离、快速部署和跨平台一致性方面的优势,为后续微服务或云原生应用开发奠定基础。
相关推荐
p***c9492 小时前
Docker机器学习实战
机器学习·docker·容器
pumpkin845144 小时前
Docker 参考手册
chrome·docker·容器
三天不学习6 小时前
GitLab Docker 安装完整配置项说明
docker·容器·gitlab
北冥有鱼被烹9 小时前
【微知】Ubuntu中如何安装docker?
ubuntu·docker
幻灭行度11 小时前
docker镜像导入到K8S的containerd中
java·docker·kubernetes
虎头金猫12 小时前
随时随地处理图片文档!Reubah 加cpolar的实用体验
linux·运维·人工智能·python·docker·开源·visual studio
哈里谢顿1 天前
Docker 中快速启动 Prometheus + Grafana操作指南(二)
docker
醇氧1 天前
Mac 安装 Docker Desktop
macos·docker·容器
哈里谢顿1 天前
Docker 中快速启动 Prometheus + Grafana操作指南
docker