使用Docker Compose部署SpringBoot应用
写在前面在前面我们已经学会了如何通过使用Maven插件或者Dockerfile的方式,来将SpringBoot应用构建为Docker镜像并运行,但是当我们的应用数量较多时,上述两种方式似乎变得很不友好。
此时可以使用Docker Compose来解决上述问题,Docker Compose是一个用于定义和运行多个docker容器应用的工具。使用Compose允许开发者使用YAML文件来配置应用服务,之后使用一个命令,就可以部署配置的所有服务。
安装Docker Compose下载Docker Compose使用如下命令来下载Docker Compose:
1curl -L https://get.daocloud.io/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
修改下载文件的权限将下载文件的权限设置为可执行:
1chmod +x /usr/local/bin/docker-compose
确认Docker C ...
使用Dockerfile为SpringBoot应用构建Docker镜像
写在前面在部署第一篇中,我们学习了如何使用通过docker-maven-plugin来构建docker镜像,遗憾的是此方式需要依赖自建的Registry镜像仓库,这在实际开发过程中还是有困难的。
鉴于此,本篇来学习另一种方式,使用Dockerfile来构建docker镜像。注意此方式不需要依赖自建的镜像仓库,只需应用的jar包和一个Dockerfile文件。
本篇在第二篇《整合Swagger-UI实现在线API文档》的基础上,使用Dockerfile为SpringBoot应用构建Docker镜像。
Dockerfile常用指令FROMFROM用于指定所需依赖的基础镜像,格式如下:
1FROM <image>:<tag>
举个例子,如某个镜像需要依赖java8的镜像:
1FROM java:8
注意FROM命令必须放在Dockerfile文件的第一行。
MAINTAINERMAINTAINER用于指定镜像维护者的名字,格式如下:
1MAINTAINER <name>
举个例子,如某个镜像的维护者为kenbings:
1MAINTAINER kenbin ...
使用Maven插件为SpringBoot应用构建Docker镜像
写在前面本篇在第二篇《整合Swagger-UI实现在线API文档》的基础上,使用Maven插件为SpringBoot应用构建Docker镜像,并上传至私有镜像仓库Docker Registry中。
Docker Registry开发者可以使用Docker提供的registry这一镜像来搭建属于自己的私有仓库,这里选择版本为2的镜像即可,先将其下载到本地:
1docker pull registry:2
这里有它的快速使用方法,其实就是一条命令:
执行下面的命令即可创建一个私有仓库:
1docker run -d -p 5000:5000 --restart=always --name registry2 registry:2
Docker开启远程API打开docker.service文件:
1vi /usr/lib/systemd/system/docker.service
将其中的如下代码:
1ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
修改为如下所示:
1Exec ...
整合RabbitMQ实现延迟消息
写在前面本文将在第七篇《整合MongoDB实现用户商品浏览记录》的基础上整合RabbitMQ,实现延迟消息这一功能。
RabbitMQAMQP简介AMQP (Advanced Message Queuing Protocol ,高级消息队列协议)是一个线路层的协议规范,而不是API 规范(例如JMS)。由于AMQP 是一个线路层协议规范,因此它天然就是跨平台的,就像SMTP、HTTP等协议一样,只要开发者按照规范的格式发送数据,任何平台都可以通过AMQP进行消息交互。像目前流行的StormMQ、RabbitMQ等都实现了AMQP协议。
RabbitMQ简介RabbitMQ是一个实现了AMQP的开源消息中间件,使用高性能的Erlang编写。RabbitMQ具有可靠性、支持多种协议、高可用、支持消息集群以及多语言客户端等特点,在分布式系统中存储转发消息,具有不错的性能表现。
RabbitMQ的安装第一步,安装Erlang,可点击 这里 进行下载,然后进行安装。
第二步,安装RabbitMQ,可点击 这里 进行下载,然后进行安装。
第三步,以管理员身份打开终端,并切换到RabbitMQ安装目 ...
整合MongoDB实现用户商品浏览记录
写在前面本文将在第六篇《使用ElasticSearch实现商品复杂搜索》的基础上整合MongoDB,实现用户商品浏览记录这一功能。
MongoDBMongoDB简介MongoDB是一个为快速开发互联网Web应用而构建的数据库系统,其数据模型和持久化策略就是为了构建高读/写吞吐量和高自动灾备伸缩性的系统。
安装MongoDB服务第一步,点击 这里 下载MongoDB的安装包;
第二步,自定义MongoDB的安装路径:
第三步,在MongoDB安装路径下创建data\db和data\log这两个文件夹:
第四步,在MongoDB安装路径下创建mongod.cfg配置文件,里面的配置信息如下:
12345systemLog: destination: file path: E:\Application\MongoDB\data\log\mongod.logstorage: dbPath: E:\Application\MongoDB\data\db
第五步,进入到MongoDB安装路径下的bin目录,里面有两个exe文件,分别是客户端和服务端运行程序:
然后以管理员身 ...
使用ElasticSearch实现商品复杂搜索
写在前面本文将在第五篇《整合ElasticSearch实现商品搜索》的基础上,使用ElasticSearch实现商品复杂搜索这一功能。
中文分词器由于商品搜索涉及到中文搜索,因此ElasticSearch需要安装分词器才可以支持。前面我们安装的分词器是IKAnalyzer,接下来简单学习如何使用它。
默认分词器使用默认分词器,只是将中文逐字进行分割,并不符合我们的要求:
12345GET /pms/_analyze{ "text": "华为手机使用较为丝滑", "tokenizer": "standard"}
输出结果:
中文分词器使用中文分词器后,可以将中文文本按照语境进行分隔,可以满足我们的要求:
12345GET /pms/_analyze{ "text": "华为手机使用较为丝滑", "tokenizer": "ik_max_word"}
输出结果:
其实在前一文中,我 ...
整合ElasticSearch实现商品搜索
写在前面本文将在第四篇《整合SpringSecurity和JWT实现认证与授权》的基础上整合ElasticSearch,实现商品搜索这一功能。
ElasticSearch简介ElasticSearch是一个分布式、可扩展、实时的搜索与数据分析引擎,它能从项目一开始就赋予你的数据以搜索、分析和探索的能力,在日常工作和学习中扮演着非常重要的角色。关于ElasticSearch的学习,可以参考笔者的其他文章。注意本篇使用的ElasticSearch版本为6.8.6。
Kibana作为访问ElasticSearch的客户端,可以很方便的提供开发者可视化方式操作ES。
在整合前,请确保ElasticSearch和Kibana都已经正确安装并启动,且ElasticSearch的分词器也已经安装。
Spring Data ElasticsearchSpring Data Elasticsearch是Spring提供的一种以Spring Data风格来操作数据存储的方式,可以避免开发者编写大量的样板代码,提升代码质量。
Spring Data Elasticsearch常用注解@Document@Do ...
整合SpringSecurity和JWT实现认证与授权
写在前面本文将在第三篇《整合Redis实现数据缓存》的基础上整合SpringSecurity和JWT,实现认证与授权这一功能。
使用的框架简介SpringSecuritySpringSecurity是一个强大的可高度定制的认证与授权框架,对于Spring应用来说它是一套Web安全标准。SpringSecurity注重于为Java应用提供认证和授权功能,像所有的Spring项目一样,它对自定义需求具有强大的扩展性。关于SpringSecurity的学习,可以参考笔者的其他文章。
JWTJWT简介JWT是JSON WEB TOKEN的缩写,它是基于RFC 7519 标准定义的一种可以安全传输的的JSON对象,由于使用了数字签名,所以是可信任和安全的。
JWT组成JWT由三部分组成:header、playload和signature,JWT token的格式为header.payload.signature。
其中header中用于存放签名的生成算法:
1{"alg": "HS512"}
payload中用于存放用户名、token的 ...
整合Redis实现数据缓存
写在前面本文将在第二篇《整合Swagger-UI实现在线API文档》的基础上整合Redis,实现数据缓存这一功能。
Redis简介Redis是一个使用C语言开发的高性能键值对数据库,可用于数据缓存,以实现大量数据的高并发负载访问。
点击 这里 下载Redis,选择3.2.100的版本进行下载:
下载之后解压到指定目录:
接着打开终端,切换到上述解压目录,执行redis启动命令:
1redis-server.exe redis.windows.conf
可以看到此时redis就已经启动成功了。
整合Redis第一步,复制一份shop-swagger-ui源码,将其名字修改为shop-redis,然后对应包和文件中的信息也记得修改,本篇后续所有操作均在shop-redis这一Module中进行。
第二步,在shop-redis的POM文件中新增如下依赖:
12345<!--redis依赖配置--><dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
整合Swagger-UI实现在线API文档
写在前面本文将在第一篇《项目骨架搭建》的基础上整合Swagger-UI,实现可以在线阅读API文档这一功能。
Swagger-UI简介Swagger-UI是HTML、CSS和Javascript的一个集合,可以动态地根据注解生成在线API文档,本篇将要整合的Swagger-UI版本为2系列。
Swagger-UI常用的一些注解如下所示:(1)@Api:用于修饰Controller类,可生成Controller相关的文档信息;(2)@ApiOperation:用于修饰Controller类中的方法,可生成接口方法相关的文档信息;(3)@ApiParam:用于修饰接口中方法的参数,可生成接口参数相关的文档信息;(4)@ApiModelProperty:用于修饰实体类的属性,当实体类是请求参数或返回结果时,会直接生成相关的文档信息。
关于Swagger-UI的详细介绍,可以参阅笔者其他的文章,此处不做过多介绍。
整合Swagger-UI第一步,复制一份shop-basic源码,将其名字修改为shop-swagger-ui,然后对应包和文件中的信息也记得修改,本篇后续所有操作均在shop-sw ...