01搭建环境、导入项目
1. 下载虚拟机
前往 VMware 官网下载 VMware Workstation Pro 17 安装包,按默认选项完成安装即可。安装完成后准备一台 CentOS 7 虚拟机,并确保虚拟机与宿主机之间网络连通(建议选择 NAT 模式)。
2. 在虚拟机中安装宝塔 Linux
宝塔面板是一款简单好用的 Linux/Windows 服务器运维管理面板,可以大幅降低服务器管理门槛。进入宝塔官网 https://www.bt.cn/,点击"立即免费安装",复制对应 Linux 系统的安装命令。
打开虚拟机终端,粘贴安装命令并运行,过程中会提示:
Do you want to install Bt-Panel to the /www directory now?(y/n):
直接输入 y 回车。安装结束后会输出面板信息,需要记录下内网面板地址、username、password。
接下来安装端口扫描工具并确认 SSH 端口可用:
yum install nmap
nmap 127.0.0.1确认输出中包含 22/tcp open ssh。然后浏览器访问刚刚记录的内网面板地址,使用 username、password 登录。登录后会弹出运行环境选择窗口,选择 LNMP(推荐),点击"一键安装",等待 Nginx、MySQL、PHP 等组件安装完成。
为方便后续容器对外访问端口,需关闭防火墙和 SELinux:
systemctl stop firewalld
setenforce 0
systemctl status firewalld # 应为 inactive (dead)
getenforce # 应为 Permissive同时在宝塔面板"安全"菜单中关闭防火墙,放行后续需要用到的端口(如 3306、8080、18080、18081)。
3. 部署 MySQL(基于 Docker)
本项目的 MySQL 部署完全基于 Docker 完成。宝塔面板自带 Docker 管理入口(左侧菜单可见 Docker),如果没有,可在"软件商店"中搜索并安装 Docker。
3.1 Docker 基本概念
动手部署前,先了解 Docker 的几个核心概念:
- 镜像(Image):将应用所需的函数库、依赖、配置等与应用一起打包得到的文件包,是一个只读模板。
- 容器(Container):Docker 在运行镜像时创建的隔离运行环境,每个容器都是相互独立的进程。
- 镜像仓库(Repository):存储和管理镜像的服务,Docker 官方维护的公共仓库 Docker Hub 是目前最大的镜像仓库,包含 MySQL、Nginx、Java 等常见应用镜像。
Docker 安装应用时会自动搜索并下载应用镜像,运行镜像时创建容器,从而实现应用的快速部署。相比传统手动安装 MySQL 需要下载安装包、卸载冲突依赖、按顺序执行多条 rpm 命令,Docker 只需要一条 docker run 命令即可完成。

3.2 Docker 常用命令
Docker 命令主要分为操作镜像和操作容器两类。
镜像相关命令:
docker pull <镜像名> # 拉取镜像
docker images # 查看本地镜像列表
docker rmi <镜像名或ID> # 删除本地镜像
docker save -o file.tar <镜像名> # 导出镜像为文件
docker load -i file.tar # 从文件导入镜像
docker build -t <镜像名>:<tag> . # 基于 Dockerfile 构建镜像
docker push <镜像名> # 推送镜像到仓库容器相关命令:
docker run # 创建并运行容器
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(含已停止)
docker start <容器名> # 启动已停止的容器
docker stop <容器名> # 停止运行中的容器
docker rm <容器名> # 删除容器
docker logs <容器名> # 查看容器日志
docker exec -it <容器名> bash # 进入运行中的容器
镜像名称一般分两部分组成:[repository]:[tag],例如 mysql:5.7。其中 repository 是镜像名,tag 是版本号。未指定 tag 时默认使用 latest,代表最新版本镜像。
3.3 创建 Docker 网络
为了让多个容器(如 mysql、hmall 后端、nginx 前端)之间能够通过容器名互相访问,需要先创建一个自定义网络。在终端执行:
docker network create hm-net查看是否创建成功:
docker network ls加入同一自定义网络的容器可以直接用容器名(例如 mysql)作为主机名访问,避免使用易变的容器 IP,便于后续配置 jdbc:mysql://mysql:3306/... 这样的连接串。
3.4 上传 MySQL 配置与初始化文件
点击宝塔面板"文件",进入根目录 /root/,将课前资料中的 mysql 文件夹拖拽进去。该文件夹包含两个子目录:
conf:MySQL 自定义配置文件,挂载后覆盖容器内默认配置。init:MySQL 初始化 SQL 脚本,容器首次启动时会自动执行其中所有.sql文件,用于创建数据库、表及初始数据。
3.5 创建并运行 MySQL 容器
在终端中执行以下命令(终端默认位于 /root 目录,因此可直接使用绝对路径挂载):
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=123 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/conf:/etc/mysql/conf.d \
-v /root/mysql/init:/docker-entrypoint-initdb.d \
--network hm-net \
mysql由于本地不存在 mysql 镜像,Docker 会自动从 Docker Hub 拉取 mysql:latest,下载完成后输出一串容器 ID 表示容器已启动。
命令参数详解:
| 参数 | 说明 |
|---|---|
-d |
让容器在后台运行 |
--name mysql |
给容器命名为 mysql,名称必须唯一 |
-p 3306:3306 |
端口映射,宿主机 3306 映射到容器内 3306 |
-e KEY=VALUE |
设置环境变量,如时区、root 密码 |
-v 本地目录:容器内目录 |
数据卷挂载,将宿主机目录映射到容器内 |
--network hm-net |
将容器加入 hm-net 自定义网络 |
mysql |
指定运行的镜像名,默认 tag 为 latest |
3.6 数据卷挂载
-v 参数实现宿主机目录与容器内目录的映射,方便我们在宿主机直接编辑容器内文件,也方便迁移和持久化容器产生的数据。

需要注意本地目录写法:
- 本地目录必须以
/或./开头,否则会被识别为数据卷名而非本地目录。 -v mysql:/var/lib/mysql会被识别为一个名为mysql的数据卷。-v ./mysql:/var/lib/mysql会被识别为当前目录下的mysql目录。
数据卷本身的常见命令:
docker volume ls # 查看所有数据卷
docker volume rm <卷名> # 删除指定数据卷
docker volume inspect <卷名> # 查看数据卷详情
docker volume prune # 清除未使用的数据卷4. 本地连接数据库
使用 Navicat 等数据库图形化工具连接容器中的 MySQL:
- 主机:填写宝塔虚拟机的内网 IP,例如
172.22.129.22 - 端口:3306
- 用户名:root
- 密码:上面
MYSQL_ROOT_PASSWORD环境变量设置的值
点击"测试连接",提示成功后保存即可。连接后可看到 init 目录中 SQL 脚本创建的数据库与表结构。
5. 启动后端和前端
5.1 启动后端 hmall
项目资料中 hmall 为后端服务。启动前需确认 application.yaml 中的数据库 URL 和密码与刚刚部署的 MySQL 一致:host 指向虚拟机 IP(或同网络容器名 mysql),端口 3306,密码 123。配置无误后启动 SpringBoot 主类即可。
5.2 启动前端 hmall-nginx
前端项目 hmall-nginx 是一个 Nginx 静态资源服务。进入 hmall-nginx 目录,在该目录下打开命令行窗口,执行:
start nginx.exe浏览器访问 http://localhost:18080,看到商城首页即部署成功。项目登录账号为 Jack,密码为 123。