MinIO简介
-
MinIO基于Apache License v2.0开源协议的对象存储服务,可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。
-
MinIO兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。
-
官网文档:http://docs.minio.org.cn/docs/
使用MinIO
- 拉取镜像:
docker pull minio/minio
- 创建容器
docker run -p 9000:9000 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=admin" -e "MINIO_SECRET_KEY=admin" -v /home/data:/data -v /home/config:/root/.minio minio/minio server /data
- 访问minio系统:
http://192.168.xxx.xx:9000
入门案例:
前期准备:
在本地磁盘中有 :E://list.html
在本地E盘有一个 list.html
文件
依赖
<dependencies>
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>7.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
开发代码
public static void main(String[] args) {
//获取list.html
try {
FileInputStream file = new FileInputStream("E://list.html");
//1.获取minio的链接信息 ,创建客户端
MinioClient minioClient = MinioClient.builder()
.credentials("minio", "minio123")//凭证 用户名和密码
.endpoint("http://192.168.200.130:9000").build();
//2.上传
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.object("list.html")//文件的名称
.contentType("text/html")//文件类型
.bucket("leadnews")//minio管理页面创建的桶名称
.stream(file, file.available(),-1) //1. 2.文件大小(有文件就会一直传) 3.要传入多少(-1)所有文件
.build();
//上传文件时候需要传入一个对象上面
minioClient.putObject(putObjectArgs);
//访问路径
System.out.println("http://192.168.200.130:9000/leadnews/list.html"); //可以直接点击打开,(可写可不写)
} catch (Exception e) {
e.printStackTrace();
}
}
注意 如果文件上传成功后不能访问,则需要一个权限
将MinIO封装为starter
- 场景
如果使用文章微服务就要用到文件服务来用上传文件等操作,如果用到评论微服务则也需要文件服务等等 ,集成起来复杂不利于维护;此时就需要把这些微服务抽出来,抽成一个文件服务-starte,只要有文件用到只需要依赖就可以 - 封装为starter后,可以提供一系列的便捷API和功能,使开发人员更容易地使用MinIO。例如,可以提供一些常用的上传、下载和删除文件的方法,而无需开发人员自己编写复杂的操作代码,减少了在多个项目中重复配置的工作,将MinIO封装为starter后,可以更好地与Spring Boot框架和其他组件进行集成这样,可以将MinIO融入到项目的整体架构中,提高系统的灵活性和可扩展性。
- 资源以上传 以封装,上传,下载等等功能