SpringCloud学习笔记
Docker会在运行镜像时创建一个隔离环境,称为容器(container),不同的应用相互运行不干扰,可以运行n多应用甚至mysql集群等。Dockers Compose通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署,一般一个Docker Compose文件对应一个项目,其中有项目所需要的所
Day02
枚举处理器
MybatisPlus提供了一个处理枚举的类型转换器,可以帮我们把枚举类型与数据库类型自动转换。
首先定义枚举类
@Getter
public enum UserStatus {
NORMAL(1,"正常"),
FROZEN(2,"冻结")
;
@EnumValue
@JsonValue//选择返回给前端的值
private final int value;
private final String desc;
UserStatus(int value,String desc){
this.value=value;
this.desc=desc;
}
}
再将相关字段改为枚举类型:
private Integer status;->private UserStatus status;
其中@JsonValue注解表示返回给前端的值是value数字,还是desc自定义字符串,如果没有这个注解默认返回的是英文字符串,比如NORMAL
使用:
if(user==null||user.getStatus()==UserStatus.FROZEN)
分页插件
首先,要在配置类中注册MyBatisPlus的核心插件,同时添加分页插件:
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
//1、初始化核心插件
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//2、添加分页插件
PaginationInnerInterceptor pageInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
pageInterceptor.setMaxLimit(1000L);//设置分页上限
interceptor.addInnerInterceptor(pageInterceptor);
return interceptor;
}
配置完成后可以直接使用插件:
void testPageQuery(){
int pageNo=1,pageSize=2;
//1、准备分页条件
//1.1分页条件
Page<User> page = Page.of(pageNo, pageSize);
//1.2排序条件
page.addOrder(new OrderItem("balance",true));
page.addOrder(new OrderItem("id",true));
//2.分页查询
Page<User> p = userService.page(page);
//3.解析
System.out.println(p.getTotal());
System.out.println(p.getPages());
List<User> records = p.getRecords();
records.forEach(System.out::println);
}
Docker
快速构建、运行、管理应用的工具
镜像与容器
当我们利用Docker安装应用是,Docker会自动搜索并下载应用镜像(image)。镜像不仅包含应用本身,还包含应用运行时所需要的环境、配置、系统函数库。Docker会在运行镜像时创建一个隔离环境,称为容器(container),不同的应用相互运行不干扰,可以运行n多应用甚至mysql集群等
镜像仓库:存储和管理镜像的平台,Docker官方维护了一个公共仓库:DockerHub
命令解读:

1、Docker run:创建并运行一个容器,-d是让容器在后台运行而不是命令行,一般都会加上
2、--name mysql:给容器起名字,必须唯一
3、-p 3306:3306:设置端口映射
4、-e KEY=VALUE:是设置环境变量
5、mysql:指定运行的镜像名字,但是这个命名并不是完整、规范
镜像命名规范:
镜像名称一般分为两部分组成:[repository]:[tag]
其中repository就是镜像名
tag是镜像的版本
在没有指定tag时,默认是latest,代表最新版本的镜像
Docker基础
常见命令
Docker最常见的命令就是操作镜像、容器的命令

Docker数据卷
数据卷(valume)是一个虚拟目录,是容器内目录与宿主机目录之间的桥梁

这样操作容器内(宿主机内)文件同时会自动修改宿主机对应文件(容器内对应文件)
在创建容器时,利用-v 数据卷名:容器内目录完成挂载
容器创建时,如果发现挂载的数据卷不存在时,会自动创建
常见命令:
Docker volume ls:查看数据卷
Docker volume rm:删除数据卷
Docker volume inspect:查看数据卷详情
Docker volume prune:删除未使用的数据卷
实现本地挂载
在执行docker run命令时,使用-v 本地目录:容器内目录可以完成本地目录挂载
本地目录必须以“/”或者“./”开头,如果直接以名称开头,会被识别为数据卷而不是本地目录,eg:
-v mysql:/var/lib/mysql会被识别成一个数据卷交mysql
-v ./mysql:/var/lib/mysql会被识别成当前目录下的mysql目录
自定义镜像
镜像就是包含了应用程序、程序运行的系统函数库、运行配置等文件的文件包。构建镜像的过程其实就是把上述文件打包的过程,构建一个Java镜像的步骤:
准备一个Linux运行环境、安装JRE并配置环境变量、拷贝jar包、编写运行脚本
镜像结构
1、入口(Entrypoint):镜像运行入口、一般是程序启动的脚本和参数
2、层(Layer):添加安装包、依赖、配置等,每一次操作都形成新的一层
3、基础镜像(BaseImage):应用依赖的系统函数库、环境、配置、文件等
Dockerfile
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像,将来Docker可以根据Dockerfile帮我们构建镜像。常见指令:

我们可以基于Ubuntu基础镜像,利用Dockerfile描述精细结构,也可以直接基于JDK为基础镜像,省略前面的步骤:
//基础镜像
FROM openjdk:11.0-jre-buster
//拷贝jar包
COPY docker-demo.jar /app.jar
//入口
ENTRYPOINT ["java","-jar","/app.jar"]
当编写好了Dockerfile,可以利用下面的命令来构建镜像:
Docker build -t myImage:1.0
-t:是给镜像起名,格式依然是repository:tag的格式,不指定tag时默认是latest
.:是指定Dockerfile所在目录,如果纠正当前目录,则指定为“."
网络
默认情况下,所有容器都是以bridge方式连接到Docker的一个虚拟网桥上,可以通过自定义网络来解决虚拟ip不定的情况,加入自定义网络的容器才可以通过容器名称互相访问,Docker的网络操作命令如下:

加入同一个自定义网络容器的组件可以相互访问,且可以用容器名代替对应的ip地址进行访问
DockerCompose
Dockers Compose通过一个单独的docker-compose.yml模板文件(YAML格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署,一般一个Docker Compose文件对应一个项目,其中有项目所需要的所有的服务

更多推荐



所有评论(0)