导入一个现成的IDEA项目工程,但是利用Docker从0开始配置环境,最终达到项目成功运行的目的
此外,我们导入的是一个商品管理的案例,其中包含商品的CRUD功能。我们将来会给查询商品添加多级缓存。
也即本项目可以用于演示多级缓存。
后期做数据同步需要用到MySQL的主从功能,所以需要在虚拟机中,利用Docker来运行一个MySQL容器。
为了方便后期配置MySQL,我们先准备两个目录,用于挂载容器的数据和配置文件目录:
进入mysql目录后,执行下面的Docker命令:
注意之前别忘了先启动docker
创建一个新容器,并运行他
给容器取个名字 (此处给容器取名就叫mysql)
后面接一个镜像名称 表示根据哪个镜像创建新容器
隔离容器配置绑定端口,否则访问不了
本地数据卷挂载到容器内的数据卷上
在/tmp/mysql/conf目录添加一个my.cnf文件,作为mysql的配置文件:
文件的内容如下:
配置修改后,必须重启容器:
上面给容器取了名字的好处,这里可以直接使用name启动容器,而非容器id(需要docker ps 或者docker ps -a查一下,比较麻烦)
注意是docker start 不是docker run(创建并运行容器)
查看:
接下来,利用Navicat客户端连接MySQL,然后导入资料提供的sql文件:
链接:https://pan.baidu.com/s/1dv6ydcwaum3tXRnqmCNxmA
提取码:hzan
其中包含两张表:
- tb_item:商品表,包含商品的基本信息
- tb_item_stock:商品库存表,包含商品的库存信息
下面导入资料提供的工程:
项目结构如图所示:
其中的业务包括:
- 分页查询商品
- 新增商品
- 修改商品
- 修改库存
- 删除商品
- 根据id查询商品
- 根据id查询库存
业务全部使用mybatis-plus来实现,如有需要请自行修改业务逻辑。
在包的中可以看到接口定义:
在包的中可以看到接口定义:
在包的中可以看到接口定义:
在包的中可以看到接口定义:
在包的中可以看到接口定义:
逻辑删除,修改状态为3 (MP内部有这个机制呀,这里竟然没用)
这里是采用了逻辑删除,将商品状态修改为3
在包的中可以看到接口定义:
这里只返回了商品信息,不包含库存
在包的中可以看到接口定义:
注意修改application.yml文件中配置的mysql地址信息:
需要修改为自己的虚拟机地址信息、还有账号和密码。
修改后,启动服务,访问:http://localhost:8081/item/10001即可查询数据
- 完整Controller代码
商品查询是购物页面,与商品管理的页面是分离的。
部署方式如图:
我们需要准备一个反向代理的nginx服务器,如上图红框所示,将静态的商品页面放到nginx目录中。
页面需要的数据通过ajax向服务端(nginx业务集群)查询。
这里直接使用资料中准备好了的nginx反向代理服务器和静态资源。
链接:https://pan.baidu.com/s/1dv6ydcwaum3tXRnqmCNxmA
提取码:hzan
找到资料的nginx目录:
将其拷贝到一个非中文无空格的目录下,运行这个nginx服务。
运行命令:
然后访问 http://localhost/item.html?id=10001即可:
现在,页面是假数据展示的。我们需要向服务器发送ajax请求,查询商品数据。
打开控制台,可以看到页面有发起ajax查询数据:
而这个请求地址同样是80端口,所以被当前的nginx反向代理了。
其中的api一看就知道是nginx.conf里配置的反向代理规则
查看nginx的conf目录下的nginx.conf文件:
其中的关键配置如下:
监听80端口,以/api开头的请求
其中的192.168.150.101是我的虚拟机IP,也就是我的Nginx业务集群要部署的地方:
若你的不一样,如:192.168.141.100 , 手动修改一下
完整内容如下: