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 在环境隔离、快速部署和跨平台一致性方面的优势,为后续微服务或云原生应用开发奠定基础。
相关推荐
阿里巴巴P8资深技术专家1 小时前
docker容器启动报错
运维·docker·容器
元气满满-樱5 小时前
docker网络模式详解
网络·docker·容器
空中楼阁,梦幻泡影5 小时前
Docker安装MinIO
运维·docker·容器·minio·存储
Selegant7 小时前
Docker 搭建 MySQL 主从服务实战操作详解
mysql·docker·容器
嗑瓜子儿溜茶水儿10 小时前
docker 部署 kkfileview ; arm64; ky10;
java·docker
九思x11 小时前
通过docker-compose.yml文件一次性安装mysql、minio、redis服务
运维·docker·容器
编程小Y11 小时前
Docker常见问题
docker
scx_link11 小时前
使用docker安装ollama及ollama拉取模型的总结
运维·docker·容器·ollama
Warren9811 小时前
面试和投简历闲聊
网络·学习·docker·面试·职场和发展·eureka·ansible
传奇吉他手千早爱音11 小时前
怎么解决无法拉取Docker镜像?不如我们自己建一个加速站(
docker